版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30625315/article/details/83659372
接上面的那个【字节–编程题】
byte:字节,由8位的二进制组成;
在计算机中,8位带符号二进制数的取值范围是【-128,127】,Java中,byte的取值范围也是【-128,127】。
这块涉及到计算机组成原理的原反补码,计算机中数字的计算和存储都是用的补码。
原码:最高位是符号位,‘0’表示正,‘1’表示负,其余位以二进制的形式表示数值的大小;
反码:正数的反码与其原码相同;负数的反码,除符号位不变,其他位取反;
补码:正数的补码与其原码相同;负数的补码实在其反码的末位加1。
所以,字节编码可以是负数。
public static void main(String[] args) {
int a = 444;
byte b = (byte) a;
System.out.println(b);
}
解析:
int型是32位的二进制,即4个字节;
(444)原码 = (444)补码 = 0000…000110110010
int型数据(32位) 转换成 byte型数据(8位) 需要截断处理
得到:1011 0010
补码 1011 0010 = 原码 1100 1110 = -68