积累点点滴滴
二进制的表示
JAVA 中的int 为4个字节 也就是32位 如果定义一个数字 5 二进制就是101 java中是32位 需要补全32位 也就是
00000000000000000000000000000101
负数的表示需要用到二进制的 原码 反码 和补码
其中 正数的原码 反码 补码 都是该值转化为二进制,然后根据不同的位数补位
原码:
正数的原码就是把十进制转化成二进制 ,负数的原码是把绝对值的二进制 最高位 (符号位)补1
5 的原码 00000000000000000000000000000101
-5 的原码 10000000000000000000000000000101
注:符号位 一般是最高位 0代表正数 1代表负数
反码 :
正数的反码等于它的原码 负数的反码等于 除了最高位(符号位)各位置原码取反 (1变 0 , 0变1)
5 的反码 00000000000000000000000000000101
-5 的原码 11111111111111111111111111111010
反码是相互的 也就是 10000000000000000000000000000101是11111111111111111111111111111010的反码 ,同样 11111111111111111111111111111010也是10000000000000000000000000000101的反码。
补码 :
正数的补码和原码一样 负数的补码等于 原码出符号位外个位置取反 然后加1 也就是 负数的反码+1
5 的补码 00000000000000000000000000000101
-5 的补码 11111111111111111111111111111010+1 =11111111111111111111111111111011
所以 -5的二进制表示为 11111111111111111111111111111011
二进制负数 转化为十进制
首先 除符号位 -1 (-5为例)
11111111111111111111111111111010
取反码
10000000000000000000000000000101
这就是 -5的原码
然后除符号位 转化成十进制就是负数的绝对值 最后加-号
学习积累,有错误希望各位大神指教
参考:http://www.jb51.net/article/34133.htm