
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



![Python:如何用pandas.concat() 合併兩個DataFrame並重置index? pd.concat([df1, df2]) .reset_index(drop=True) ; pd.concat([df1, df2], ignore_index=True) Python:如何用pandas.concat() 合併兩個DataFrame並重置index? pd.concat([df1, df2]) .reset_index(drop=True) ; pd.concat([df1, df2], ignore_index=True)](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2023/03/20230311123232_5.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![Python: 如何求整個 pandas.DataFrame 中的最大值? pandas.DataFrame .max().max() ; 如何求最大值的index, columns? numpy.where(condition, [x, y, ]/) ; condition為一 bool_mask Python: 如何求整個 pandas.DataFrame 中的最大值? pandas.DataFrame .max().max() ; 如何求最大值的index, columns? numpy.where(condition, [x, y, ]/) ; condition為一 bool_mask](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2023/04/20230418154049_50.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![Python: 字串 str.find(關鍵字[,start][,end]),找不到的話回傳-1,如何找出資料字串中,所有關鍵字的index?詞頻計算 Python: 字串 str.find(關鍵字[,start][,end]),找不到的話回傳-1,如何找出資料字串中,所有關鍵字的index?詞頻計算](https://i0.wp.com/savingking.com.tw/wp-content/uploads/2022/11/20221122100657_32.png?quality=90&zoom=2&ssl=1&resize=350%2C233)




近期留言