java 负数与二进制(原码补码反码科普)

首先简单介绍一下原码、补码、反码(皆由0、1组成,最高位是符号位,0表示正,1表示负),所谓的这三种码,都是在机器中用来表示数的(具体细节以后想得起来再补充):

原码:
在二进制的基础上在最高位添加符号位,如:5(10)=101(2),-5(10)=1101(2)

反码:
正数的反码与原码相同,负数的反码除符号位外逐位取反,如:原码10010(这是负数)= 反码11101

补码:
正数的补码与原码相同,负数的补码除符号位外逐位取反,然后末位加一,如:原码10010(这是负数)= 反码11101=补码11110

例如:
-1
1、原码:10000000 00000000 00000000 00000001
2、反码:11111111 11111111 11111111 11111110
3、补码:11111111 11111111 11111111 11111111

java中的二进制用补码表示,int是32位的,32位每位都要占据,所以没有意义的0也会在变换的时候被改变。

发布了31 篇原创文章 · 获赞 0 · 访问量 331

猜你喜欢

转载自blog.csdn.net/qq_36360463/article/details/104187627