【问题标题】:Set particular Bit in Java long value在 Java 长值中设置特定位
【发布时间】:2015-07-21 16:03:11
【问题描述】:

我有一个长值并通过转换十六进制值设置特定位。

long l = 4;

long output; //output is 84 if i want set 7th bit (1000 0100) 

同样的方法是 long 是 7 然后输出是 87 那么如何在 long 值中设置特定位。

要求:

我必须通过正确的格式向服务器发送一个字节。

客户给出以下内容。 1. 第 7 位是否设置。 2. 一个整数值(如 4,5,6,7 等) 现在我生成了格式为客户端参数的字符串或十进制 (2H)。

【问题讨论】:

  • 您的问题是如何设置特定位,或者如何获取十六进制值?您不必转换为十六进制来设置特定位。
  • 我知道如何从 long (Long.toHexString(intValue)) 获取十六进制,但现在我想设置特定的位。

标签: java hex bit-manipulation byte bitwise-operators


【解决方案1】:

您需要按位或使用位的值。

您可以通过将1L 向左移动正确的位数来找到该位的值。 (不要忘记L,否则您将移动int 1。)

按位或可以使用 Java 中的 | 运算符完成。

所以代码变成了:

long output = l | (1L << 7);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-21
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2013-12-15
    • 2016-02-11
    相关资源
    最近更新 更多