Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перевод с десятичной в двоичную, восьмиричную, шестнадчатиричную систему счисления (https://javascript.ru/forum/misc/47006-perevod-s-desyatichnojj-v-dvoichnuyu-vosmirichnuyu-shestnadchatirichnuyu-sistemu-schisleniya.html)

Rise 19.06.2017 06:03

ms-pro, неверные результаты, должно быть так:
//Decimal to Binary //      Output | Representation | Leading zeros by bytes |                      Note
  10..toString(2);  //        1010 |  1-byte & more |            ...00001010 |                         -
 128..toString(2);  //    10000000 |  2-byte & more |    ...0000000010000000 | 10000000 (1-byte) is -128
 254..toString(2);  //    11111110 |  2-byte & more |    ...0000000011111110 | 11111110 (1-byte) is   -2
2017..toString(2);  // 11111100001 |  2-byte & more |    ...0000011111100001 |                         -

Особенности работы toString и parseInt с отрицательными числами

ms-pro 26.08.2017 11:35

Цитата:

Сообщение от Rise
ms-pro, неверные результаты, должно быть так:

Пожалуй вы правы, касательно подхода к двоичному представлению целых чисел в JS. НО в "целом", не могу с вами полностью согласиться собственно по этой причине:

На разных машинах используют два разных подхода к порядку следования байтов.
Один подход, называемый little-endian, предполагает, что первым идёт самый младший байт числа, далее в порядке возрастания, и самый старший байт идёт последним.
Второй подход, который называют big-endian, прямо проти­воположно: сначала идёт старший байт числа, а младший располагается в памяти последним.

Т.е. моя реализация соответствует подходу "little-endian", а toString - "big-endian". Чтобы "вылечить" мою реализацию, достаточно перед 19 строкой (т.е. перед выводом конечного результата) добавить строку содержащую:
byte.reverse();


P.S. я это добавил в своём предидущем посте.


Часовой пояс GMT +3, время: 02:27.