成就感!
天阿 2的補數卡住我JAVA進度好幾天 一直找不到詳細說明的網頁
就在剛剛心不甘情不願硬是啃了wiki寫的數學原理
想了快要一個小時 即使資質駑鈍如我 專心起來頭腦還是可以丁的一聲想通的!!!
解開這個卡了我三天的問題 真是超爽的!!!
於是我決定要追尋這種會讓我很有成就感的工作
想通以後開心的笑個不停 多巴胺源源不絕 常常來一下一定會長命百歲!
二進位世界的減法運算:
同樣以加法視之 忽略溢位後結果相同
設想無符號8位元時 其數值範圍為0~255 共256個數 以MOD 做計算 (表示溢位循環的概念 )
256 MOD 256 = 0 ≡ 0 MOD 256 = 0 ====> 1 0000 0000 ≡ 0000 0000
258 MOD 256 = 2 ≡ 2 MOD 256 = 2 ====> 1 0000 0010 ≡ 0000 0010
以有符號8位元儲存數字 其數值範圍為-128~127
若想表示一數 248
由於正數部分將不足表示(僅到127) 將向上溢位
於是溢位循環後的餘數將與-128~127這些可表示的數等價 (循環為0,…,127,-128,-127,-126,…-1 )
248 MOD 256 = 248 ≡ –8 (注意: 0 MOD 256 = 0, … , 127 MOD 256 = 127, 128 MOD 256 = –128, … 255 MOD 256 =-1)
也就是說 做一減法: 123-8 將等價於捨棄溢位的加法: 123 +248
這也就是為何在signed 2’s complement表示法中 –8 = 1111 1000 (8取1's complement 再加1) = unsigned 248
123-8 = 115 ≡ 123 +248 忽略溢位
123 ====> 0111 1011
-8 ====> 1111 1000
-----------------------------
115 = 1 0111 0011
0 意見:
張貼留言