BeriaFantom
@BeriaFantom
Full Stack Razrabotchik

Какие методы более предпочтительны для работы с двоичными числами?

Например, метод toString в качестве аргумента принимает основание системы счисления, и возвращает десятичное число, преобразованное в число СС, которая была указана в качестве аргумента. Например:
var num = 52;
alert(num.toString(2)); // 110100

НО этот метод не позволяет адекватно преобразовывать двоичное число, записанное в 32-битном формате, к примеру, в десятичное.
var num = 00000000000000000000000011111111;
alert(num.toString(10)); // хрен пойми сколько миллионов вместо положенных 255

Какие методы, может быть методы объекта Number, помогут разрешить вопрос?
  • Вопрос задан
  • 145 просмотров
Решения вопроса 2
hahenty
@hahenty
('•')
все недесятичные числа должны быть записаны как строки:
var num = "0000000000000000011111111";
и
var dnum = parseInt(num,2);
сделает перевод СС.
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
js "понимает" 3 системы счисления:
  • 10 - числа пишутся в коде как обычно
  • 16 - числа начинаются с 0x
  • 8 - числа начинаются с 0
Соответственно в Вашем примере число обрабатывается как восьмиричное

Number.prototype.toString() сериализует число в строку в любой СС с 2 по 36, но на выходе будет строка, для десириализации можно использовать 2й аргумент у функций parseInt, например так: parseInt('00000000000000000000000011111111', 2)
Как работать с отдельными битами числа Вы уже нашли в учебнике, так что расписывать не буду.

p.s. Часто бывает нужно заполнить двоичные константы, чтобы их удобно было передавать через CONST1 & CONST2. Я для таких целей использую такой генератор:
function* iota() {
    var i = 1;
    while(true) {
        yield i;
        i *= 2;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы