【问题标题】:How to calculate range of any datatype while casting it如何在转换时计算任何数据类型的范围
【发布时间】:2021-01-17 05:15:46
【问题描述】:

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

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

字节 x = (字节) 300;

x 的值是多少?

我如何在纸上计算这个东西?

【问题讨论】:

  • fyi,(int) 演员什么都不做 - 整数文字已经int

标签: java data-structures logic


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 但是我们不是在看无符号字节。 Java 的 byte 已签名(顺便说一句,这很痛苦)。
    猜你喜欢
    • 2020-10-31
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多