JaC*_*JaC 1 java bit-manipulation decimal
我有一个32位整数值,我想将其转换为两个十进制值.来自5个最低有效位的一个值和来自其余位(27位)的一个十进制值.
我怎么用Java做到这一点?
我能想到的唯一解决方案是这样的:
int i = 1073326082;
String binaryString = Integer.toBinaryString(i);
int fiveLeastSigValue = Integer.parseInt(binaryString.substring(27), 2));
int theRest = Integer.parseInt(binaryString.substring(0, 27), 2));
但我确定有一些更有效的方法来做到这一点.有任何想法吗?
好吧,我想:
int value = ...;
int leastSignificant = value & 0x1f; // Bottom 5 bits
int mostSignificant = value >> 5; // Top 27 bits
Run Code Online (Sandbox Code Playgroud)
如果要进行0扩展(即始终具有正值),请将移位运算符调整为">>>".
我不确定你的"部分十进制值"是什么意思 - "十进制"通常用于指代非整数,但你要解析整数.这是你想要的吗?
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |