我有一个二进制数,我想得到只有七位的十进制值而不包括第8位。我如何在java中解决这个问题。
例如。 130为二进制=> 10000010,我只需要00000010 => 2,即只将最高位改为0。
请帮忙。
答案 0 :(得分:6)
使用bit-mask:
int y = x & 0x7F;
答案 1 :(得分:5)
byte b =10;
byte result = (byte) (b & 127);
在封面下它将是
00001010 //10 in dec
AND 01111111 // our mask ,127 in dec
= 00001010 //10
另一个例子
10000001 //129 in dec
AND 01111111 // our mask ,127 in dec
= 00000001 //1
答案 2 :(得分:0)
private static boolean getBit(int b, int p) {
int mask = 1 << 8 - p;
return (b & mask) > 0;
}
private static int setBit(int b, int p) {
int mask = 1 << 8 - p;
return b | mask;
}
private static int unsetBit(int b, int p) {
int mask = 1 << 8 - p;
return b & ~mask;
}