二進(jìn)制補(bǔ)碼運(yùn)算法則 java中-5的反碼是怎么計(jì)算的,補(bǔ)碼呢?
java中-5的反碼是怎么計(jì)算的,補(bǔ)碼呢?先轉(zhuǎn)換成二進(jìn)制,很清楚11111 011逐位是反碼補(bǔ)碼是和0xff-31:1000 0000 0000 0001 1111,沒(méi)有計(jì)算過(guò)程,就是直接寫(xiě),31是1
java中-5的反碼是怎么計(jì)算的,補(bǔ)碼呢?
先轉(zhuǎn)換成二進(jìn)制,很清楚
11111 011
逐位是反碼
補(bǔ)碼是和0xff
-31:1000 0000 0000 0001 1111,沒(méi)有計(jì)算過(guò)程,就是直接寫(xiě),31是11111,負(fù)數(shù)是第一位是1,共32位,需要計(jì)算的過(guò)程是反碼,如5個(gè)反碼~5個(gè)二進(jìn)制原碼:0000 0000 0101后反碼運(yùn)算:1111111111111111111111111111010。在Java中,有符號(hào)整數(shù)由補(bǔ)碼表示,補(bǔ)碼=逆11。首先找到相反的:1000 0000 01012。然后找到補(bǔ)碼:1000 0000 0110。最高的位代表符號(hào)位,1代表負(fù)數(shù),0代表正數(shù),所以結(jié)果是-6
3。二進(jìn)制數(shù)是:0000 15二進(jìn)制數(shù)是:0000 1111
實(shí)際上,加法和10進(jìn)制數(shù)完全相同,但是二進(jìn)制數(shù)每次都輸入1,你可以理解這個(gè)
!0000 0011
0000 1111
--
0001 0010
5 binary 00000101
對(duì)~5 binary 11111 010求反(此時(shí),它的補(bǔ)碼為-6)
對(duì)10000101求反
將1加為10000110(-6)
負(fù)補(bǔ)碼減去1等于負(fù)原始代碼