攝影或3C

Python: 二進制的負數如何表示?補數

 

12(10進位) = 0000 1100(2進位)

1補數: 1111 1111 – 0000 1100 

= 1111 0011 

或者說取反(0變1,1變0)

 

2補數: 1111 0011 + 1

=1111 0100 (十進制-12)

 

1111 0100如何還原為-12?

最左邊第一個1代表負號,先不看

剩下111 0100 (7個數字)

111 1111(7個1) – 111 0100

=000 1011 (或者說取反)

再加1

=000 1100

=1*2**3+1*2**2

=12(10進位)

別忘記一開始最左邊的1代表負號

推薦hahow線上學習python: https://igrape.net/30afN

 

維基百科二補數

在計算二進制數字的二補數時,會將數字進行位元反相運算,再將結果加1,不考慮溢位位元(一般情形,溢位位元會為0),就可以得到該數字的二補數。

以下考慮用有符號位8位元二進位表示的數字5:

0000 0101 (5)

其最高位元為0,因為此數字為正數。若要用二補數系統表示 -5,首先要將5的二進位進行反相運算〔1變為0,0變為1 〕:

1111 1010

目前的數字是數字5的一補數,因此需要再加1,才是二補數:

1111 1011 (-5)

以上就是在二補數系統中 -5的表示方式。其最高位元為1,因為此數字確實為負數。

一個負數的二補數就是其對應的正數。以 -5為例,先求數字的一補數:

0000 0100

再加一就是 -5的二補數,也就是5。

0000 0101 (5)

簡單來說,數字a(正負數皆可)的二補數即為 -a。

 

以上結論:

含最高位一起反向後(1補數)+1(2補數),

正負號就會顛倒

推薦hahow線上學習python: https://igrape.net/30afN

 

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡