Java 如何在强制转换任何数据类型时计算其范围

Java 如何在强制转换任何数据类型时计算其范围,java,data-structures,logic,Java,Data Structures,Logic,例如,我论文中的一个问题是这样的 在java中:字节的范围是-128到127 字节x=(字节)300 x的值是多少 如何在纸上计算这个值?您只需要保留最低的8位,然后将其解释为2的有符号字节 如果使用代码,您通常会使用255(当int的低位8位都是1时的值)执行逐位AND运算,即300&255,但是要在纸上计算,请将数字除以256,并保留余数(在代码中,这将是模运算符,即300%256),这是您的答案,但如果超过127,则从余数中减去256 在这种情况下,由于300恰好在256到256+127(

例如,我论文中的一个问题是这样的

在java中:字节的范围是-128到127

字节x=(字节)300

x的值是多少


如何在纸上计算这个值?

您只需要保留最低的8位,然后将其解释为2的有符号字节

如果使用代码,您通常会使用
255
(当
int
的低位8位都是
1
时的值)执行逐位AND运算,即
300&255
,但是要在纸上计算,请将数字除以256,并保留余数(在代码中,这将是模运算符,即
300%256
),这是您的答案,但如果超过127,则从余数中减去256


在这种情况下,由于
300
恰好在
256
256+127
(即
383
)的范围内,您只需执行
300-256=44
,就可以得到您的答案。

您只需要保留最低的8位,然后将其解释为2的有符号字节

如果使用代码,您通常会使用
255
(当
int
的低位8位都是
1
时的值)执行逐位AND运算,即
300&255
,但是要在纸上计算,请将数字除以256,并保留余数(在代码中,这将是模运算符,即
300%256
),这是您的答案,但如果超过127,则从余数中减去256


在这种情况下,因为
300
恰好在
256
256+127
(即
383
)的范围内,所以您只需执行
300-256=44
,就可以得到您的答案。

为了简单起见,让我们看看无符号字节(值0-255)和任意正整数。当计算分配给一个字节时该整数的值时,必须查看该整数的模256值。这意味着您必须减去256,直到您的数字小于256。
在您的示例中,整数是300,300模256是44,因此44将被分配给无符号字节。

为了简单起见,让我们看看无符号字节(值0-255)和任意正整数。当计算分配给一个字节时该整数的值时,必须查看该整数的模256值。这意味着您必须减去256,直到您的数字小于256。
在您的示例中,整数是300,300模256是44,因此44将被分配给一个无符号字节。

fyi,
(int)
cast不起任何作用-整数文本已经是
int
。fyi,
(int)
cast什么都不做-整数文本已经是一个
int
。但是我们没有看到无符号字节。Java的
byte
是有符号的(这是一个痛苦的btw)。但是我们没有看到无符号字节。Java的
byte
是有符号的(这是一个痛苦的btw)。