初识原码反码补码


原码为第一位正负,第二位及以后为大小;

反码:正数的反码不变,负数的反码为第一位(符号位)不变其余取反;

补码:正数补码不变,负数补码为第一位(符号位)不变其余取反再加1,即为反码加一。

   小例子:     假设比特16位,

        其中第一位是符号0为正,1为负;

        所以也就是最大为0111111111111111

        然后此时大小为0+2+4+8+-------+2的14次方=2的15次方-1;

        即为最大范围,最小为同理;

    然而最小为-32768,最大为32767;经百度,知道有+0与-0。

        +0的原码为0000,0000,0000,0000,-0的原码为1000,0000,0000,0000.

       又因为-0的补码为0000,0000,0000,0000与+0的补码相同,重复,

经过百度:

        “但是,我们知道,16位二进制数可以表示216个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,那么我们可以知道 ,他就是1000000000000000,因为任何一个原码都不可能在转成补码时变成1000000000000000。

         所以,人为规定1000000000000000这个补码编码为-32768。 所以,补码系统中,范围是-32768~32767。”
         “因此,实际上,二进制的最小数确实是1111111111111111,只不过二进制的补码的最小值它才是1000000000000000,而补码的1111111111111111是二进制值的-1。 ”
 所以综上,正负的那个最值数并不相同
             比如:int类型是4字节,存放二进制的32位,同理最高位存放符号,他能存放的最大数就是2的31次方减1,也就是2147483647,而表面上最小的也是负2147483647,这样他的原码范围就出来了,其正确范围为-2147483648 - 2147483647,它们的正负都是不对称的。
最后加上无负号情况

 

       

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM