
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如何做excel的樞紐分析? groupbyObj = df.groupby([‘A’, ‘B’]) ; groupbyObj.apply() 跟 groupbyObj.agg() 差異為何? result = groupbyObj .apply( function(df) -> Series ) ; result_agg = groupbyObj .agg( [‘mean’, ‘std’] ) ; aggfunc(Series) -> float Python如何做excel的樞紐分析? groupbyObj = df.groupby([‘A’, ‘B’]) ; groupbyObj.apply() 跟 groupbyObj.agg() 差異為何? result = groupbyObj .apply( function(df) -> Series ) ; result_agg = groupbyObj .agg( [‘mean’, ‘std’] ) ; aggfunc(Series) -> float](https://i2.wp.com/savingking.com.tw/wp-content/uploads/2023/03/20230327140158_46.png?quality=90&zoom=2&ssl=1&resize=350%2C233)

![Python: pandas.DataFrame如何移除所有空白列?if df_raw.iloc[r,0] is np.nan: nanLst.append(r) ; df_drop0 = df_raw.drop(nanLst,axis=0) ; pandas.isna() ;df_drop0 = df_raw.drop(nanLst,axis=0).reset_index(drop=True) Python: pandas.DataFrame如何移除所有空白列?if df_raw.iloc[r,0] is np.nan: nanLst.append(r) ; df_drop0 = df_raw.drop(nanLst,axis=0) ; pandas.isna() ;df_drop0 = df_raw.drop(nanLst,axis=0).reset_index(drop=True)](https://i2.wp.com/savingking.com.tw/wp-content/uploads/2022/12/20221206144233_67.png?quality=90&zoom=2&ssl=1&resize=350%2C233)


近期留言