javascript десятичный (16 младших бит) в десятичный

#javascript #hex #decimal #bits

#javascript #шестнадцатеричный #десятичный #биты

Вопрос:

Извините, но я не силен в преобразовании битов. Мне нужно преобразовать decimal -> decimal в младший 16 бит, как в этом примере.

 1:16777237 decimal = 1000015 hex
2:16 lower bits = 0015 hex (each digit in hexadecimal is 4 bits)
3: 0015 hex = 21 decimal  (21 is the result i need)
 

Использование

 (16777237).toString(16);
 

я могу получить шестнадцатеричное значение 1000015, мой вопрос в том, как, я получаю младшие биты как im, не такие сильные в битах. и т.д. самый простой способ получить результат.

Комментарии:

1. Ищите javascript bitwise operation , тогда вам будет лучше в битах;)

Ответ №1:

Вы могли бы применить битовую маску с 111111111111111111 2 и получить результат с помощью побитового И .

               base 2             base 10   base 16
    -------------------------   --------   -------
    1000000000000000000010101   16777237   1000015
amp;   0000000001111111111111111      65535      ffff
-----------------------------   --------   -------
    0000000000000000000010101         21        15
 
 console.log(16777237 amp; ((1 << 16) - 1)); 

Другим решением может быть просто использование оператора остатка % с 2 16.

 console.log(16777237 % (1 << 16)); 

Комментарии:

1. Спасибо, это прекрасно, не могли бы вы также предоставить пример его обратного преобразования? ^^ 🙂 21-> 16777237 Спасибо! 🙂