參考:
負數的位運算
原碼, 反碼, 補碼 詳解
一直都不是很懂負數的位運算,還有反碼,補碼,源碼這些,總結一下
關于反碼,補碼,源碼的定義看參考部落格
在每一個二進制數中,最高位是用來表示它的符号的,負數為1,正數為0
原碼就是符号位加上真值的絕對值, 即用第一位表示符号, 其餘位表示值
比如如果是8位二進制:
[+1](10)= 0000 0001(2)
[-1](10)= 1000 0001(2)
正數的反碼補碼都是其本身
負數:
反碼是在其原碼的基礎上, 符号位不變,其餘各個位取反
補碼是在其原碼的基礎上, 符号位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)
負數取模:
根據取模運算的數學定義即可
\[x mod y=x-y*[x/y]
\]