web-dev-qa-db-fra.com

JavaScript convertissant décimal en binaire

À 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

22
Robert Rocha

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'>

26
Robo Robok

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
12
Jason Cust

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&deger=11&pad=false

3
Simon Wang

.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
2
alamnaryab

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.

1
Teocci

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`;
    }
}

0
anshul

Pour mieux comprendre, je pense que vous devriez essayer de faire le calcul de cette conversion par vous-même.

  • (1) 11/2 = 5(1) 5/2 = 2 
  • (0) 2/2 = 1 
  • (1) 1/2 = 0 

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); 
}
0
Aleksandar Hristov