Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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.
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | | | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|