【问题标题】:Java Bitwise Or Between Byte and IntJava 按位或在字节和整数之间
【发布时间】:2015-03-28 00:18:46
【问题描述】:

我正在尝试按位或在 Java 中的 byte 值上执行。

比如我在跑步:

byte b = (byte)0b11111111;
int result = 0 | b;

我对此的预期结果是0b00000000 00000000 00000000 11111111255。但是,我收到了-10b11111111 11111111 11111111 11111111

我假设 Java 在执行操作之前通过符号扩展将我的 byte 转换为 int,我只是好奇是否有一种方法可以在不使用位掩码的情况下获得我想要的结果 (@987654329 @)。

【问题讨论】:

  • "不使用位掩码" 答案是使用位掩码。在 Java 中真的没有办法解决这个问题。

标签: java binary bit-manipulation twos-complement sign-extension


【解决方案1】:

在将byte 转换为int 时,使用位掩码是禁用符号扩展的标准解决方案。你只需要接受这片 Java 的丑陋。

int result = 0 | (b & 0xFF);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2020-08-18
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多