`
langlanglanglang
  • 浏览: 31704 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

何为原码,反码,补码?

 
阅读更多
java中整型数据存储时是以补码的方式进行的。

1.何为原码,反码,补码?
首先java中的整型数值都是有符号的,规定数据的二进制形式第一位为符号位。0为正,1为负。则十进制3的原码为:0000 0011,十进制-3的原码为: 1000 0011 。

反码是原码符号位不变,其它位按位取反。即十进制3的反码为: 0111 1100  ;十进制-3的反码为:1111  1100。

补码,我们规定正数的补码与原码相同,负数的补码是反码加1。即十进制3的补码为: 0000 0011  ;十进制-3的补码为:1111  1101。

2.二进制的数据已经可以运算,为什么还要用补码?
这是为了方便计算。有没有发现,负数的补码与原码之和刚好为0。这表明负数的补码是原码的相反数。所以如果我们知道了一个负数的补码,对这个补码再求补即得原码。规律:负数补码的补码等于原码。采用补码进行计算,简化了减法运算,把减法转化成了加法运算。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics