Joã*_*nes 5 java bit-manipulation
我想知道一个字节的第一位有哪个值.
例如:
我有 byte m = (byte) 0x8C;
我怎么知道第一位是1还是0?
谁能帮我吗 ?
Jon*_*eet 21
这取决于你的意思是"第一位".如果您的意思是"最重要的位",您可以使用:
// 0 or 1
int msb = (m & 0xff) >> 7;
Run Code Online (Sandbox Code Playgroud)
或者,如果您不介意值为0x80或0,请使用:
// 0 or 0x80
int msb = m & 0x80;
Run Code Online (Sandbox Code Playgroud)
或者实际上,作为boolean:
// Uses the fact that byte is signed using 2s complement
// True or false
boolean msb = m < 0;
Run Code Online (Sandbox Code Playgroud)
如果你的意思是最低有效位,你可以使用:
// 0 or 1
int lsb = m & 1;
Run Code Online (Sandbox Code Playgroud)
假设您的意思是最左边的位,按位和 0x80 并检查它是否为零:
public boolean isFirstBitSet(byte b) {
System.out.println((b & (byte)0x80));
return (b & (byte)0x80) < 0;
}
Run Code Online (Sandbox Code Playgroud)
如果您指的是最低阶位,则需要使用 0x01 并检查不同的条件:
public boolean isFirstBitSet(byte b) {
System.out.println((b & (byte)0x01));
return (b & (byte)0x80) > 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22716 次 |
| 最近记录: |