好吧,說下這個(gè)正數(shù)和負(fù)數(shù)
值為5它在計(jì)算機(jī)中表示為:
00000000 00000000 00000000 00000101
5轉(zhuǎn)換成二制是101,不過int類型的數(shù)占用4字節(jié)(32位),前面填了一堆0
-5在計(jì)算機(jī)中,負(fù)數(shù)以原碼的補(bǔ)碼形式表達(dá)。
原碼:
一個(gè)正數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù)就是正數(shù)的原碼
一個(gè)負(fù)數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù),然后最高位補(bǔ)1,就是負(fù)數(shù)的原碼
比如
00000000 00000000 00000000 00000101 是5的原碼。
10000000 00000000 00000000 00000101 是-5的原碼。
補(bǔ)碼
正數(shù)的補(bǔ)碼與原碼相同
負(fù)數(shù)的補(bǔ)碼為對(duì)該數(shù)的原碼除符號(hào)位外各位取反,然后在最后一位加1
比如:
10000000 00000000 00000000 00000101 的反碼
是:11111111 11111111 11111111 11111010
那么,補(bǔ)碼為:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
-5 在計(jì)算機(jī)中表達(dá)為:11111111 11111111 11111111 11111011
轉(zhuǎn)換為十六進(jìn)制:0xFFFFFFFB
樓主留言:
道理倒是明白,關(guān)鍵是收到數(shù)據(jù)后怎么處理。收到的數(shù)據(jù)有正數(shù)也有負(fù)數(shù)時(shí),怎么才知道自己收到的是負(fù)數(shù),負(fù)數(shù)在哪個(gè)寄存器里。