私の理解から、2進数システムは、計算を実行するために0と1の2つの数値のセットとして使用します。
なぜ:
console.log(parseInt("11", 2));
return 3
および00001011
? http://www.binaryhexconverter.com/decimal-to-binary-converter
parseInt(number, base)
は、10進数number
baseのbase
パラメーターで表される数値の値を返します。
また、11は10進数の3に相当するバイナリです。
var a = {};
window.addEventListener('input', function(e){
a[e.target.name] = e.target.value;
console.clear();
console.log( parseInt(a.number, a.base) );
}, false);
<input name='number' placeholder='number' value='1010'>
<input name='base' placeholder='base' size=3 value='2'>
parseInt
の代わりに toString() を使用します。
_11..toString(2)
_
_var str = "11";
var bin = (+str).toString(2);
console.log(bin)
_
JavaScriptのドキュメントによると:
次の例はすべてNaNを返します。
parseInt("546", 2);
//数字はバイナリ表現には無効です
parseInt
のドキュメント :で述べたように、parseInt()関数は文字列引数を解析し、の整数を返します指定された基数(数学的な数値システムの基数)。
そのため、11
のバイナリ値を3
の整数値に変換する必要があります。
11
の整数値をバイナリ値に変換しようとしている場合、 Number.toString
メソッドを使用する必要があります。
console.log(11..toString(2)); // 1011
.toString(2)
は、Number
型に適用されると機能します。
255.toString(2) // syntax error
"255".toString(2); // 255
var n=255;
n.toString(2); // 11111111
// or in short
Number(255).toString(2) // 11111111
// or use two dots so that the compiler does
// mistake with the decimal place as in 250.x
255..toString(2) // 11111111
decimal stringをバイナリに変換するために見つけた最短の方法は次のとおりです。
const input = "54654";
const output = (input*1).toString(2);
print(output);
ParseInt()関数は、文字列引数を解析し、指定された基数(数学的な数値システムの基数)の整数を返します。
したがって、11を2進数から10進数に変換することをシステムに伝えています。
具体的には、参照しているWebサイトについて詳しく見ると、実際にJSを使用してHTTP GETを発行し、Webサーバー側で変換しています。次のようなもの:
http://www.binaryhexconverter.com/hesapla.php?fonksiyon=dec2bin°er=11&pad=false
これは古い質問ですが、少し貢献できる別のソリューションがあります。私は通常、この関数を使用して10進数を2進数に変換します。
_function dec2bin(dec) {
return (dec >>> 0).toString(2);
}
_
_dec >>> 0
_は数値をバイトに変換し、toString(radix)
関数が呼び出されてバイナリ文字列を返します。シンプルできれいです。
注:radix
は、数値を表すために使用されます。 2〜36の整数である必要があります。次に例を示します。
10進数から2進数への変換の背後にある数学を理解する必要があると思います。 JavaScriptでの簡単な実装を次に示します。
main();
function main() {
let input = 12;
let result = decimalToBinary(input);
console.log(result);
}
function decimalToBinary(input) {
let base = 2;
let inputNumber = input;
let quotient = 0;
let remainderArray = [];
let resultArray = [];
if (inputNumber) {
while (inputNumber) {
quotient = parseInt(inputNumber / base);
remainderArray.Push(inputNumber % base);
inputNumber = quotient;
}
for (let i = remainderArray.length - 1; i >= 0; i--) {
resultArray.Push(remainderArray[i]);
}
return parseInt(resultArray.join(''));
} else {
return `${input} is not a valid input`;
}
}
manual decimal to binaryアルゴリズムの簡潔な再帰バージョンを次に示します。
25を使用した例:25/2 = 12(r1)/ 2 = 6(r0)/ 2 = 3(r0)/ 2 = 1(r1)/ 2 = 0(r1) = > 10011 =>逆方向=> 11001
function convertDecToBin(input){
return Array.from(recursiveImpl(input)).reverse().join(""); //convert string to array to use prototype reverse method as bits read right to left
function recursiveImpl(quotient){
const nextQuotient = Math.floor(quotient / 2); //divide subsequent quotient by 2 and take lower limit integer (if fractional)
const remainder = ""+quotient % 2; //use modulus for remainder and convert to string
return nextQuotient===0?remainder:remainder + recursiveImpl(nextQuotient); //if next quotient is evaluated to 0 then return the base case remainder else the remainder concatenated to value of next recursive call
}
}
これは私のために働いた:parseInt(Number、original_base).toString(final_base)
例:10進数から2進数への変換のためのparseInt(32、10).toString(2)。
ソース: https://www.w3resource.com/javascript-exercises/javascript-math-exercise-3.php
理解を深めるために、自分でその変換の計算を試みる必要があると思います。
その論理に基づいて関数を作成しました
function decimalToBinary(inputNum){ let binary = []; while(inputNum> 0){ if (inputNum%2 === 1){ binary.splice(0,0,1); inputNum =(inputNum-1)/ 2; } else { binary.splice(0,0,0); inputNum/= 2; } } binary = binary.join( ''); console.log(binary); }
function num(n){
return Number(n.toString(2));
}
console.log(num(5));