Accueil > > > CONVERSION AVEC OPÉRATEUR BINAIRE
CONVERSION AVEC OPÉRATEUR BINAIRE
Information sur la source
Description
Il existe des milliers de source pour convertir un nombre en une autre base, mais beaucoup ce limite à faire ces conversion avec les opérateurs Division et Modulo. Je propose une méthode très différentte de celle-ci en introduisant les opérateurs binaires, ainsi que la propriété prototype afin de rajouter ces propres méthodes à des objets comme String et Array.
Source
- function dec2bas(nombre,base)
- {
- if (!getDecalageFromBase(base))
- {
- alert("Base Invalide");
- return false;
- }
-
- equivalent = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v");
- decalage = getDecalageFromBase(base);
- result = "";
- while(nombre != 0)
- {
- result = equivalent[nombre&(base-1)]+result;
- nombre >>= decalage;
- }
- return result;
- }
-
- function bas2dec(nombre,base)
- {
- nombre = nombre.reverse();
- equivalent = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v");
- result = 0;
- for (i=0;i<nombre.length;i++)
- {
- result += equivalent.array_search(nombre.charAt(i))*Math.pow(base,i);
- }
- return result;
- }
-
- function getDecalageFromBase(base)
- {
- i = 1;
- while (Math.pow(base,(1/i)) != 2)
- {
- if (i>base)
- {
- return false;
- }
- i++;
- }
- return i;
- }
-
- function array_search(text)
- {
- for (a=0;a<this.length;a++)
- {
- if(this[a] == text)
- {
- return a;
- }
- }
- }
-
- function reverse()
- {
- result = "";
- for (i=this.length-1;i>=0;i--)
- {
- result += this.charAt(i);
- }
- return result;
- }
-
- Array.prototype.array_search = array_search;
- String.prototype.reverse = reverse;
function dec2bas(nombre,base)
{
if (!getDecalageFromBase(base))
{
alert("Base Invalide");
return false;
}
equivalent = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v");
decalage = getDecalageFromBase(base);
result = "";
while(nombre != 0)
{
result = equivalent[nombre&(base-1)]+result;
nombre >>= decalage;
}
return result;
}
function bas2dec(nombre,base)
{
nombre = nombre.reverse();
equivalent = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v");
result = 0;
for (i=0;i<nombre.length;i++)
{
result += equivalent.array_search(nombre.charAt(i))*Math.pow(base,i);
}
return result;
}
function getDecalageFromBase(base)
{
i = 1;
while (Math.pow(base,(1/i)) != 2)
{
if (i>base)
{
return false;
}
i++;
}
return i;
}
function array_search(text)
{
for (a=0;a<this.length;a++)
{
if(this[a] == text)
{
return a;
}
}
}
function reverse()
{
result = "";
for (i=this.length-1;i>=0;i--)
{
result += this.charAt(i);
}
return result;
}
Array.prototype.array_search = array_search;
String.prototype.reverse = reverse;
Conclusion
Rapidement je vous explique comment la conversion se fait. Supposons que je veux convertir le nombre 20 en hexadécimal.
20 en binaire est 10100 et pour diviser un nombre binaire en hexadécimal il faut le séparer par tranche de 4 bits. Pour le diviser en groupe de 4 bits le script utilise 2 opérateurs binaires & et >>. Le & sert a faire un masque afin de retirer seulement 4 bits à la fois et le >> sert a décaler les bits afin qe se soit quatres nouveaux bits qui soit analyser la prochaine fois. Ainsi mon nombre 20 sera diviser en 1 (0001) et 4 (0100) qui donne 14 en hexadécimal.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
conversion chaine de caractères en arbre binaire [ par severino ]
Bonjour,comment, à partir d'une chaine de caractères comme "(2+3)*(5-(3.2/4))", réaliser un arbre comme cela : * + -2 3
encodage mime64 binaire en local [ par mageonyme ]
salut,j'aimerai savoir s'il existe une fonction qui encode une chaine en binaire type mime64 (javascript oblige)genre une fonction comme la fonction p
Conversion vers CDate() de VBscript [ par lib_jar ]
Bonjour, y a-t-il une astuce pour convertir une date Javascript vers un objet équivalent à un CDate() de VB? en gros j'utilise une API (COM toolkit po
TELECHARGEMENT DES DONNEES BINAIRE VIA AJAX [ par imssouane ]
j'ai un projet pour la recuperation des données binaire (fichier PDF,image.....) dans une appliction client serveur, svp est ce que il y'a quelqu'un
conversion d'une chaine en date [ par babylonne ]
bonjour tt le monde, j'arrive pas à trouver comment convertir une string en date . merci d'avance de votre aide.
Lecture d'un fichier en binaire pour stockage BLOB [ par aristauphane ]
Bonjour,Je traivaille sur une application 3 tiers, et sur la partie client je veux utiliser JavaScript pour accéder à tout type de fichier sur le disq
lecture du contenu des fichier en binaire avec Javascript [ par aristauphane ]
Bonjour,Ma question est : est ce qu'il y a une possibilité de lire un fichier en binaire avec javascript.L'objectif est: Envoyer ce contenu grâce à l'
Explications pour coder et décoder un texte en binaire. [ par Antonio le grand ]
Explications pour coder et décoder un texte en binaire. <?xml:nam
conversion minuscule/majuscule [ par noussagh ]
salut Comment peut on convertir en javascript les lettres majuscules d'une chaine de caractères saisie dans un champ texte en minuscule et vice versa
conversion [ par peter2010 ]
Bonjour je dois trouver un moyen de convertir du XML pour l'emmagasiner dans des objets JSON (j'ai du xml côté serveur (php) et je veux avoir du json
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|