Каков наилучший способ в Java для вычисления частичного десятичного значения из частей 32-битного значения - PullRequest
1 голос
/ 12 января 2011

У меня есть 32-разрядное целочисленное значение, и я хочу перевести его в два десятичных значения.Одно значение из 5 младших значащих битов и одно десятичное значение из остальных битов (27 бит).

Как бы я это сделал в Java?

Единственное решение, которое я могу придуматьэто примерно так:

int i = 1073326082;<br> String binaryString = Integer.toBinaryString(i);<br> int fiveLeastSigValue = Integer.parseInt(binaryString.substring(27), 2));<br> int theRest = Integer.parseInt(binaryString.substring(0, 27), 2));<br>

Но я уверен, что есть более эффективный способ сделать это.Есть идеи?

1 Ответ

5 голосов
/ 12 января 2011

Ну, я бы вообразил:

int value = ...;
int leastSignificant = value & 0x1f; // Bottom 5 bits
int mostSignificant = value >> 5; // Top 27 bits

Настройте оператор сдвига на «>>>», если вы хотите расширить 0 (т. Е. Всегда иметь положительные значения).

Я не уверен, что вы подразумеваете под "частичным десятичным значением", хотя - "десятичное" обычно используется для ссылки на нецелые числа, но вы анализируете целые числа Это то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...