Новичок здесь! Интересно, почему следующее преобразование завершается неудачно!
var num= prompt("Enter num");
alert(num.toString(2));
Если d входной сигнал 32. Я также получаю сообщение 32 как d:/
Новичок здесь! Интересно, почему следующее преобразование завершается неудачно!
var num= prompt("Enter num");
alert(num.toString(2));
Если d входной сигнал 32. Я также получаю сообщение 32 как d:/
попробовать
(+num).toString(2)
Number(num).toString(2)
или
parseInt(num, 10).toString(2)
Любой из них должен работать лучше для вас.
Проблема заключается в том, что метод toString
объектов javascript Number
переопределяет метод toString
объектов Object
, чтобы принять необязательное основание в качестве аргумента для обеспечения требуемой функциональности. Объект String
не переопределяет метод Object
toString
, поэтому любые переданные аргументы игнорируются.
Более подробную информацию об этих объектах см. в документах в Mozilla:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toString https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String#Methods
или школы W3:
http://www.w3schools.com/jsref/jsref_tostring_number.asp http://www.w3schools.com/jsref/jsref_obj_string.asp
С помощью этой функции вы можете указать длину вывода.
Например, decbin(7,4)
создает 0111
.
function decbin(dec,length){
var out = "";
while(length--)
out += (dec >> length ) & 1;
return out;
}
/** Преобразование десятичного числа в двоичный **/
var toBinary = function(decNum){
return parseInt(decNum,10).toString(2);
}
/** Преобразование двоичного числа в десятичное **/
var toDecimal = function(binary) {
return parseInt(binary,2).toString(10);
}
Наконец, используйте его
var num= prompt("Enter num");
alert(toBinary(num));
Вот мое решение, которое не использует parseInt, а скорее метод, который показывает логику преобразования десятичного числа в двоичный.
Этот метод печатает бит в массив, который вы можете позже распечатать, если хотите:
var number = 156;
var converted = [];
while(number>=1) {
converted.unshift(number%2);
number = Math.floor(number/2);
}
Преобразованный массив теперь будет выглядеть следующим образом:
[1,0,0,1,1,1,0,0]
который, конечно, преобразуется обратно в 156.
Сначала переведите его в целое число. На данный момент вы преобразовываете строку в это двоичное представление.
num = +num;