close
轉自:
http://lihaichuan.blog.51cto.com/498079/1087651
http://zhishidian1.kandianshi.com/Verilogchengxushejiwentisom__d/
取絕對值問題這是數位邏輯設計的問題,要求任一數之二補數方法:x = (not x) + 1 以4 bits而言,回憶一下-2是怎麼算的?
步驟一-先寫+2 : 0010
步驟二-將+2取1補數: 1101
步驟三-將步驟二所得+1: 1110 所求得即為-2
現在是反過來,給了1110 ,怎麼知道其十進制?
步驟A -將1110取1補數: 0001
步驟B -將步驟A所得+1 : 0010 ,解釋為+2
步驟C -將步驟B所得再加負號:答案即為-2
看出來了嗎?假設輸入為a3 a2 a1 a0,你要的東西-取絕對值就變這樣:
步驟1:判斷a3是否為0,若為0即為正數,直接到總合裡面
步驟2:若a3為1,則將a3 a2 a1 a0全取NOT,再將結果+1即為所得。
其實我認為你們用符號大小表示法會簡單很多,就一個bit去判斷為+/- ,要取絕對值就直接拿掉singed bit;其它的加法動作都一樣。
全站熱搜
留言列表