【码制】关于原码,反码,补码的一些笔记

前提:1.本文使用8位二进制表示

   2.主要是定点数的的使用

   3.正数的原,反,补码相同

正文:一.整数

   8位二进制原码的表示范围:-127~+127
   8位二进制反码的表示范围:-127~+127
   8位二进制补码的表示范围:-128~+127

   -(2^7-1)= -127         原码:1111 1111  补码:1000 0001

   2^7-1= +127              原码:0111 1111  补码:0000 0001

在原码,反码中0分为  +0  和  -0;

【+0】原=0000 0000

【-0】原=1000 0000

在补码的表示法中,0只有一种表示形式:

【+0】补=0000 0000

【-0】补=1111 1111 + 1=1 0000 0000(由于受到设备字长的限制,最后的进位的丢失)

所以有【+0】补=【-0】补=0000 0000

   提问:为什么补码中会多出现-128的数字?

   答:首先【-0】原=1000 0000  在 补码在中由于字长的限制使得【+0】补=【-0】补=0000 0000

   其次 原,反,补码的二进制范围都为0111 1111到1111 1111

   【-0】在补码中的二进制丢失,但是1000 0000任然存在,那么应该1000 0000应该代表什么呢?   

   再来说一说 -128 的机器码

   原码:1 1000 0000

   反码:1 0111 1111

   补码:1 1000 0000,截取低8位即1000  0000,表示的是一个负数。

   补码正好也是1000 0000,于是便填充了【-0】的补码 1000 0000 的空位

   于是补码的范围便是  -128 ~ +127 

 

                     (因本人水平有限,不足之处在所难免,敬请各位大佬指正。)

你可能感兴趣的:(【码制】关于原码,反码,补码的一些笔记)