【发布时间】:2021-01-17 05:15:46
【问题描述】:
例如,我论文中的一个问题是这样的
在 java 中:字节的范围是 -128 到 127
字节 x = (字节) 300;
x 的值是多少?
我如何在纸上计算这个东西?
【问题讨论】:
-
fyi,
(int)演员什么都不做 - 整数文字已经是int。
标签: java data-structures logic
例如,我论文中的一个问题是这样的
在 java 中:字节的范围是 -128 到 127
字节 x = (字节) 300;
x 的值是多少?
我如何在纸上计算这个东西?
【问题讨论】:
(int) 演员什么都不做 - 整数文字已经是int。
标签: java data-structures logic
您只需要保留最低 8 位,然后将其解释为 2 的补码符号字节。
如果使用代码,您通常会与255 执行按位与(当int 的低8 位都是1 时的值),即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 将分配给无符号字节。
【讨论】:
byte 已签名(顺便说一句,这很痛苦)。