你好我正在学习java编程,我刚在我的书中说过要转换的任务 int varible to byte variable
byte b;
int i=257;
当我将int转换为b
时b=(byte) i;
输出是1? 当字节变量的值从-128变为127时,它如何成为一个 在我的书中,他们说字节变量的有效范围是256?
答案 0 :(得分:5)
257 == 00000000000000000000000100000001 (as integer which holds 32 bits)
1 == 00000001 (byte holds only 8 bits)
答案 1 :(得分:2)
因为它可以存储-128到127之间的任何数字。一个字节总是用Java签名。您可以通过二进制获取其无符号值,并使用0xFF。
示例:
int i = 234;
byte b = (byte) i;
System.out.println(b); // -22
int i2 = b & 0xFF;
System.out.println(i2); // 234
答案 2 :(得分:2)
这里的关键是查看这些位。
int i = 257
给我们这一组位(不包括前导零):
b100000001
该值需要9位才能保持(int
有32位,因此有足够的空间)。执行b = (byte)i
时,它是截断演员。这意味着只有字节(8位)保存的可以被复制到它。所以这给了我们低八位:
b00000001
...这是值1
。
答案 3 :(得分:1)
256
的范围是因为它可以将 -128
中的任何数字存储到127
。这两个数字之间的差异是256
。由于1
,overflow
的值已经发生,您尝试存储的值无法用7
位和1
符号位准确表示。< / p>
答案 4 :(得分:0)
因为字节范围是从-128到+127
请检查此链接,为什么字节来自-128 to 127
答案 5 :(得分:0)
-128 0 127
,因此范围是256。
-2^7 to 2^7-1