整数的三种二进制表示方法————原码,反码,补码,

一,机器数

在计算机中用二进制表示的数称之为机器数。

机器数是有正负之分的,计算机用一个是二进制的最高位存放符号,这个bit位我们就称之为符号位,正数的符号位为0,负数的符号位为1,比如,十进制中的+10通过计算机转化为八位的二进制为00001010(一个byte有8个bit),如果是-10就是10001010,二进制储存方法有原码,反码,补码三种,

二,原码

以二进制的形式表示的数就称为原码,最左边的一个就是符号位,0表示为正数,1表示为负数,其他位表示数据位,有效的取值范围是1111111(-128)----01111111(+128),

正数间的计算

例如 :5 (00000101)+2(00000010)=7(00000111)

   0 0 0 0 0 1 0 1
+          0 0 1 0
 ------------------
   0 0 0 0 0 1 1 1

负数的计算

负数的计算是否和正数一样呢,不妨我们试试看-56(10111000)-1(00000001)

 1 0 1 1 1 0 0 0
-              1
-----------------
 1 0 1 1 0 1 1 1

10110111转换为十进制时是-55,这明显与预期不符,为了解决这个问题,人们又发明了反码,

三,反码

正数的反码和原码保持一致,负数的反码是原码的符号位不变,其余位取反,

现在我们用反码来计算一下负数的加减运算,

  1 1 0 0 0 1 1 1
 -              1
-----------------
  1 1 0 0 0 1 1 0

-56(11000111)-1(00000001)=-57(11000110),和预期符合,所以就解决了负数的运算,但是在负数与正数进行加减运算时计算结果又出现了问题,例:-3+5

 1 1 1 1 1 1 0 0
+        0 1 0 1  
-----------------
 0 0 0 0 0 0 0 1 

计算结果本应该是2(00000010),但是显示结果却是1(00000001)结果显然不对,这时又发现了补码,

补码

正数的补码是其本身,负数的补码等于其反码加一,补码的出现主要是为了解决跨零的计算的问题

我们再用补码计算一下-5+3

 1 1 1 1 1 1 0 1
+        0 1 0 1
----------------- 
 0 0 0 0 0 0 1 0

结果00000010转换为十进制等于2,结果正确

总结

在计算机中无论是正数还是负数都是用补码来进行储存和计算的,补码弥补了原码和反码不能解决的计算问题,

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值