将8位二进制的最高有效位更改为0并仅获取前七位的十进制值

时间:2011-04-12 11:22:49

标签: java

我有一个二进制数,我想得到只有七位的十进制值而不包括第8位。我如何在java中解决这个问题。

例如。 130为二进制=> 10000010,我只需要00000010 => 2,即只将最高位改为0。

请帮忙。

3 个答案:

答案 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;
}