Java 有没有简单的方法可以在短整数或整数内设置一行中的几个位?

Java 有没有简单的方法可以在短整数或整数内设置一行中的几个位?,java,Java,我试图找到一种简单的方法来设置整数或短值中的几位 对于短值,我想设置5位,从第6位开始。 我要设置的值是一个特定的值,我可以存储在字节或短字节或其他任何形式中 对于Java挫折,我看不到任何可以这样做的地方。 似乎应该有一个简单的解决方法 除了一次设置一位或类似的设置之外,还有谁知道一种简单的方法吗?简单的方法是使用逐位操作。例如,假设从零开始对位进行编号,则将5位设置为从偏移量6开始的位 int target = ... target = target | 0x07b0; // that i

我试图找到一种简单的方法来设置整数或短值中的几位

对于短值,我想设置5位,从第6位开始。 我要设置的值是一个特定的值,我可以存储在字节或短字节或其他任何形式中

对于Java挫折,我看不到任何可以这样做的地方。 似乎应该有一个简单的解决方法


除了一次设置一位或类似的设置之外,还有谁知道一种简单的方法吗?

简单的方法是使用逐位操作。例如,假设从零开始对位进行编号,则将5位设置为从偏移量6开始的位

int target = ...
target = target | 0x07b0;  // that is 00000 0111 1100 0000
或者,如果您使用的是Java 8:

target = target | 0b00000 0111 1100 0000;
如果要将从变量获得的值设置为相同的位,则

int target = ...
int value = ...
int temp = target & ( ~ 0b00000 0111 1100 0000 ); // clear current bit values
target = temp & ( value << 6 );  // set the new values.
int目标=。。。
int值=。。。
int temp=target&(~0b00000 0111 1100 0000);//清除当前位值

target=temp&(value您可以在Java中使用二进制文字:

// An 8-bit 'byte' value:
byte aByte = (byte)0b00100001;

// A 16-bit 'short' value:
short aShort = (short)0b1010000101000101;

// Some 32-bit 'int' values:
int anInt1 = 0b10100001010001011010000101000101;
int anInt2 = 0b101;
int anInt3 = 0B101; // The B can be upper or lower case.

// A 64-bit 'long' value. Note the "L" suffix:
long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;

更多

您正在寻找逐位运算符:感谢您的回复。这将满足我的需要,但我希望有一个Java方法或某个人开发的方法,其中有一个类似于此的方法(位偏移量、numbits、ValueToSet、OriginalValue)你想要的是
|
。如果你想要这个方法,就写吧。这不是一个“为我写代码”的网站。不是我,但我经常倾向于对“为我写代码”问题的代码回复投否决票。