À ma connaissance, le système de nombres binaires utilise un ensemble de deux nombres, 0 et 1, pour effectuer les calculs.
Pourquoi:
console.log(parseInt("11", 2));
renvoie 3
et non 00001011
? http://www.binaryhexconverter.com/decimal-to-binary-converter
parseInt(number, base)
renvoie decimal valeur d'un nombre présenté par le paramètre number
dans la base base
.
Et 11 est l’équivalent binaire de 3 en système décimal.
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'>
Utilisez toString () au lieu de parseInt
:
11..toString(2)
var str = "11";
var bin = (+str).toString(2);
console.log(bin)
Selon la documentation de JavaScript:
Les exemples suivants renvoient tous NaN:
parseInt("546", 2);
/ _/Les chiffres ne sont pas valides pour les représentations binaires
Comme indiqué dans la documentation pour parseInt
: La fonction parseInt () analyse un argument de chaîne et renvoie un entier du radix spécifié (la base dans les systèmes de numération mathématique).
Donc, il fait exactement ce qu'il devrait faire: convertir une valeur binaire de 11
en un entier de 3
.
Si vous essayez de convertir une valeur entière de 11
en une valeur binaire, vous devez utiliser la méthode Number.toString
:
console.log(11..toString(2)); // 1011
La fonction parseInt () analyse un argument de chaîne et retourne un entier de la base spécifiée (la base dans les systèmes de nombres mathématiques).
Donc, vous indiquez au système que vous voulez convertir 11 en binaire en décimal.
En ce qui concerne plus précisément le site Web auquel vous faites référence, si vous regardez de plus près, il utilise JS pour émettre un HTTP GET afin de le convertir côté serveur Web. Quelque chose comme suit:
http://www.binaryhexconverter.com/hesapla.php?fonksiyon=dec2bin°er=11&pad=false
.toString(2)
fonctionne lorsqu'il est appliqué à un type 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
C'est une vieille question, mais j'ai une autre solution qui pourrait contribuer un peu. J'utilise généralement cette fonction pour convertir un nombre décimal en binaire:
function dec2bin(dec) {
return (dec >>> 0).toString(2);
}
dec >>> 0
convertit le nombre en octet, puis la fonction toString()
est appelée pour renvoyer une chaîne binaire. C'est simple et propre.
Je pense que vous devriez comprendre le calcul derrière la conversion décimale en binaire. Voici l'implémentation simple en 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`;
}
}
Pour mieux comprendre, je pense que vous devriez essayer de faire le calcul de cette conversion par vous-même.
J'ai créé une fonction basée sur cette logique
fonction decimalToBinary (inputNum) { laissez binaire = []; while (inputNum> 0) { if (inputNum% 2 === 1) { binary.splice (0,0,1); inputNum = (inputNum - 1)/2; } autre { binary.splice (0,0,0); inputNum/= 2; } } binary = binary.join (''); console.log (binaire); }