关于带符号整数的反码,补码,真值,与原码的讨论。(还有判断正溢出和负溢出)

关于带符号整数的反码,补码,真值,与原码的讨论。(还有判断正溢出和负溢出)

1)整数的反码:
就是将该带符号整数的绝对值所对应的二进制数中的0变成1,1变成0。
举例子:(以8bits为例)
e.g.1: -1的绝对值为1,1对应的二进制数为00000001,则1的反码为11111110
e.g.2: -4的绝对值为4,4对应的二进制数为00000100,则4的反码为11111011
2) 带符号整数的补码:
在(1)中,我们已经完成了求一个带符号二进制整数的补码的第一步。得到了其绝对值的反码,第二个步骤就是将得到的反码加1就得到了该带符号二进制整数的补码。
举例子:(为便于诸君的理解,我仍以8bits为例,以下也是)
e.g.1: 1的反码为11111110,那么-1的补码为11111111
e.g.2: 4的反码为11111011,那么-4的补码为11111100
PS: 补码之所以会存在,是为了让负数变成能够进行‘+’运算的整数。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。负0与正0的表示方法相同。
3)带符号整数的真值
一个带符号整数的二进制数值称为真值
例如:
-7的二进制数值或真值为11111001
-128的真值是10000000
4)带符号整数的原码
原码表示法在数值的前面增加了一位符号位,即最高位为符号位。正数该位为0,负数该位为1。特别的是,与补码不同,正0与负0的原码表示方法是不同的。
例如:
正0的原码为00000000
负0的原码为10000000
-1的原码为10000001
原码即将该整数的绝对值的二进制数的最高位改变,视所要表示的数的正负情况。如果是正数,最高位填0;如果是负数,最高位填1。
5)二进制整数加法运算为何会产生溢出
在用补码方式表示n位带符号整数时,最大数为2的n次方-1,最小数为负的2的(n-1)次方。以8bits为例,最大数为127(对应的二进制数01111111),最小数为-128(对应的二进制数为10000000)。由于计算机中存在位数的限制,整数溢出的问题就是不可避免的。
总结起来,整数的加法运算会产生以下几种情况
#1:
两个正数相加,如果最高位变成了1,则产生了正溢出。
#2:
两个负数相加,如果最高位变成了0,则产生了负溢出。
#3:
一正一负相加,不会产生溢出。
6)Final Part
计算机中存储负数的方法:(8bits)
在这里插入图片描述其实,计算机中存储负数的方式有《易经》中“亢龙有悔”的意境。到127后,在加上1,反而变成了这几个比特所能表示的最小的数(-128),从正数的巅峰,一下子就落入到了最小的负数。也许我们也能从中领略到一点生命,生活和世界的道理。
参考资料:
1.百度百科原码
2.百度百科补码

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值