我们经常会看到这样的语法
(byte) 0xAD
0xAD实际是个16进制,转换成二进制为:10101101,转换成10进制是:173,它是个正数
10101101只是int的简写,int由4个byte字节,即32位bit组成,实际的值是
(00000000 00000000 00000000 )10101101
int由4 byte组成,因此int转byte是会掉位的,直接截取最后一个字节,即:
10101101
符号位是1,因此它是负数,负数的存储方式是补码。因此要先求出补码才能计算值。
求补码方式为:
符号位不变,其他位取反,然后+1,映射到这里则为
11010010 + 1 -> 11010011 则值为 -(2^6+2^4+2^1+2^0) = -83
因此0xAD = 173 ,(byte) 0xAD=-83
时间: 2024-10-19 03:14:33