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

前提: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 

 

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

转载于:https://www.cnblogs.com/Zoeun/p/11480068.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值