原反补比较通俗易懂的讲解http://t.csdn.cn/gYGJw
二进制的三种状态:
原码、反码、补码
首先介绍一下由来,由于二进制无法表示负数,所以原码出现了,
原码:首位为符号位,1为负数,0为正数------------------解决了二进制没有负数的问题
其次原码无法解决正负数相加的问题,所以出现了反码,
反码:正数原反补相同,负数除了符号位全部取反--------------解决了二进制正负数相加问题
最后反码无法解决0有两个码,另外将-128纳入(最终是让1000 0000表示-128),
原码:+0:0000 0000 ,-0:1000 0000
反码:+0:0000 0000 ,-0:1111 1111
上面原码和反码运用到,0代表正数,正数原反补都是一样的,1代表负数,符号位不变,其余全部取反
由于以上问题,所以出现了补码,
补码:反码+1,记住是这个是二进制,逢二进一,若进制到符号位也会被进制
byte的取值范围为:-128~127
此处解释一下,为什么用8位数 0000 0000或1111 1111来计算,因为计算机的最小存储单元为字节(byte),一个字节(byte)由8个比特(bit)组成,每一个比特都是二进制位,0和1表示。
比特也是最小的信息单元,注意不是最小存储单元,计算机的存储方式是以byte存储
在java idea里都是以十进制展示的,要先转成 原码 再转成 反码 再转成 补码,补码才是计算机底层二进制的计算方式,另外注意一下整数的原反补都是一样的,且只有二进制的原码才能用8421码快速转,所以
原码:看数据
反码:转数据
补码:运算数据