版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1336978
各种数值在计算机中的表示形式称为机器数,机器数采用二进制数来表示数据,数据的正负号也分别用0和1来表示。为了便于运算,带符号的机器数可采用原码、反码、补码、移码等编码方法。
注:以下规则均以机器字长为8(即采用8个二进制位来表示数据)来举例说明。
⊙正数:如下图①先写上要表示的数据,②符号位(首位)写上0,③如果有空位则用0补上,如X=22=10110B,则X原=00010110;
⊙负数:如下图①先写上要表示的数据,②首位写上1,③如果有空位则用0补上,如X=-27=-11011B,则X原=10011011。
⊙正数:反码等于原码,如X=10110,则X反=X原=00010110;
⊙负数:如下图,在原码的基础上,④符号位(首位)不变,⑤其他位按位取反(0变成1,1变成0),如X=-11011,则X原=10011011,X反=11100100。
⊙正数:补码等于原码和反码,如X=10110,则X补=X反=X原=00010110;
⊙负数:在反码的基础上,⑥让反码加1,如X=-11011,则X原=10011011,X反=11100100,X补=11100101。
正数和负数的移码,都是在反码的基础上,让反码的符号位取反,即得该数的移码。如X=-11011,则X原=10011011,X反=11100100,X补=11100101,X移=01100101。
原码、反码、补码、移码这几种表示方式之间的转换,基本上只有正数和负数转换的时候有些差别,当遇到小数时,只需要把小数也表示为二进制,转换方式跟正数一样。如X=0.25=0.01,X原=0.0100000,X反=0.1011111,X补=0.1100000,X移=1.1100000。