本文將介紹這三種方式的定義和轉(zhuǎn)換方法,并給出一些例子。
一、什么是原碼
原碼是最直觀的表示方式,就是將一個有符號整數(shù)的符號位和數(shù)值位按照順序存儲在計(jì)算機(jī)中。符號位通常是較高位,0表示正數(shù),1表示負(fù)數(shù)。數(shù)值位就是該整數(shù)的絕對值的二進(jìn)制形式。例如,8位二進(jìn)制數(shù)可以表示-127到127之間的整數(shù),其中00000000表示0,00000001表示1,01111111表示127,10000000表示-0,10000001表示-1,11111111表示-127。
二、什么是反碼
反碼是對原碼進(jìn)行按位取反的操作,但是符號位不變。也就是說,正數(shù)的反碼和原碼相同,負(fù)數(shù)的反碼是除了符號位之外的其他位取反。例如,8位二進(jìn)制數(shù)的反碼表示如下:
00000000(原碼) -> 00000000(反碼)
00000001(原碼) -> 00000001(反碼)
01111111(原碼) -> 01111111(反碼)
10000000(原碼) -> 11111111(反碼)
10000001(原碼) -> 11111110(反碼)
11111111(原碼) -> 10000000(反碼)
三、什么是補(bǔ)碼
補(bǔ)碼是在反碼的基礎(chǔ)上加1的結(jié)果,也就是說,正數(shù)的補(bǔ)碼和原碼相同,負(fù)數(shù)的補(bǔ)碼是在其反碼的最低位加1。例如,8位二進(jìn)制數(shù)的補(bǔ)碼表示如下:
00000000(原碼) -> 00000000(補(bǔ)碼)
00000001(原碼) -> 00000001(補(bǔ)碼)
01111111(原碼) -> 01111111(補(bǔ)碼)
10000000(原碼) -> 10000000(補(bǔ)碼)
10000001(原碼) -> 11111111(補(bǔ)碼)
11111111(原碼) -> 10000001(補(bǔ)碼)