原码反码补码

3 原码、反码、补码

3.1 知识点补充

在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。无符号的整数用来表示0和正整数,即自然数;带符号的正数可以表示所有的整数。

创新互联于2013年创立,是专业互联网技术服务公司,拥有项目网站设计制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元谢家集做网站,已为上家服务,为谢家集各地企业和个人服务,联系电话:18982081108

由于计算机中符号和数字一样,都必须用二进制数串来表示,因此,正负号也必须用0、1来表示。通常我们用最高的有效位来 表示数的符号(当用8位来表示一个整数时,第8位即为最高有效位,当用16位来表示一个整数时,第16位即为最高有效位。)0表示正号、1表示负号。

这种正负号数字化(0表示正号、1表示负号)的机内表示形式就称为机器码或者机器数,而相应的机器外部用正负号表示的数称为真值。将一个真值表示成二进制字串的机器数的过程就称为编码

无符号数没有原码、反码和补码一说。只有带符号数才存在不同的编码方式。带符号整数有原码、反码、补码等几种编码方式。

**原码即直接将真值转换为其相应的二进制形式,而反码和补码是对原码进行某种转换编码方式。**正整数的原 码、反码和补码都一样,负数的反码是对原码的除符号位外的其他位进行取反后的结果(取反即如果该位为0则变为1,而该位为1则变为0的操作)。而补码是先求原码的反码,然后在反码的末尾位加1 后得到的结果,即补码是反码+1。IBM-PC中带符号整数都采用补码形式表示。

注意,只是带符号的整数采用补码存储表示的,浮点数另有其存储方式。

  1. 正数的补码是其本身
  2. 负数的反码,符号位不变,其余的按位取反
  3. 负数的补码,反码加1

对于字长为8位有符号的int,因为最高为符号位,占1位,所以最小为()2 = (-127)10,最大为(0)2 = (127)10;即其原码范围为:-127~127

有符号的8位二进制的原值表达范围为:-127至127,此时共255个数字;然而,8位二进制 的补码排列共有$A_{2}^{8}$ = 256个,0000 0000 至1111 1111 。

补码组合 范围 个数
0000 0000 - 0111 1111 0 ~+127 128
多余的一种组合待定 1
1000 0001 - 1111 1111 -1~-127 127

****看似要被浪费掉了啊!其实不然,( ) 2 = ( 2^7 ) 10 = ( 128 ) 10,这个组合要利用起来,不能太偏离数值意义,表示128,显得更直观。


名称栏目:原码反码补码
转载来于:http://scyanting.com/article/dsoihed.html