将整数变量转换为字节变量

时间:2013-11-06 09:44:35

标签: java

你好我正在学习java编程,我刚在我的书中说过要转换的任务 int varible to byte variable

byte b;
int i=257;

当我将int转换为b

b=(byte) i;

输出是1? 当字节变量的值从-128变为127时,它如何成为一个 在我的书中,他们说字节变量的有效范围是256?

6 个答案:

答案 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。由于1overflow的值已经发生,您尝试存储的值无法用7位和1符号位准确表示。< / p>

答案 4 :(得分:0)

因为字节范围是从-128到+127

请检查此链接,为什么字节来自-128 to 127

答案 5 :(得分:0)

-128 0 127,因此范围是256。

-2^7 to 2^7-1