Se connecter
Se connecter

ou
Créer un compte

ou

Sujet Nombre décimal / binaire

  • 11 réponses
  • 3 participants
  • 1 021 vues
  • 1 follower
1 Nombre décimal / binaire
Je souhaite savoir comment convertir un nombre décimal en un nombre binaire, 22 bits, format 2.20 ; ou 24 bits au format 1.23
2
Quel est le type de représentation que tu utilises ?

22bit ça dit pas grand-chose, c'est du flottant, du fixe, big endian, little endian, signé, non signé quelle est la taille de la mantisse?
3
...ok, je recherche les infos et je te réponds....
4
Si c'est juste des entiers, il suffit pour les signés de convertir en divisant pas des puissances de 2 pour chaque rang

par ex: 153

c'est suppérieur à 128 mais inférieur à 256 donc il faut diviser par 2^7, ce qui fait 1, reste 25, 25divisé par 2^6=0, reste 25, 25 divisé par 2^5=0 reste 25, divisé par 2^4 =1 reste 6... etc...

à la fin en mettant ensemble les résultats, tu tombe sur 10011110 ...

ça c'est pour les entiers positifs...
5
Bon alors, c'est pour calculer des coefficients pour un DSP...

> format : 2.20
range : -2.0 to (2.0 - 1LSB)


> format 1.23, clipped


> format 3.23
range : -4.0 to (4.0 - 1 LSB)



désolé, mais le binaire et moi.... :oops:
6
Pour les signés (donc avec positif et négatif) tu vire un bit pour le signe, donc si t'avais 8bits, tu n'en utilisera que seulement 7, là il reste encore à transformer tes 7 bits restants en un complément:

sur 8 bits, 83 devient 01010011
mais si tu veux représenter le négatif pour un ordinateur, le premier bit devient un bit de signe, reste 7 bits qui doivent être convertis en complément

à savoir si 83 = 01010011 en binaire signé, 11010011 n'est pas égale à -83 mais à -45
-83 -45 = -128, c'est à dire le nombre minimal représentable en 8bits signé moins un.
pour avoir -83, il suffit de faire un complément

| 10000000 (128)
| - 01010011 (83)
| = 00101101 (45)

-83 est donc égale à 10101101 (le premier bit étant pour dire que c'est un négatif)
7

Citation : > format : 2.20
range : -2.0 to (2.0 - 1LSB)


j'ai chopé des exemples:

Citation : 1000000000000000000000 = -2.0
1100000000000000000000 = -1.0
1111111111111111111111 = (1 LSB below 0.0)
0000000000000000000000 = 0.0
0100000000000000000000 = 1.0
0111111111111111111111 = (2.0 - 1 LSB)


mais pour les autre valeurs, 1.4 par exemple, ou -0.9 ?
8
Si je traduis, c'est du signé, le premier bit est donc un bit de signe, le 2è est pour les entiers et le reste pour les valeurs intermédiaires... donc une représentation à virgule fixe...


0000000000000000000000 = 0.0
0100000000000000000000 = 1.0

on est bien dans une notation avec complément car le nombre négatif le plus proche de zéro est

1111111111111111111111 (premier bit = bit de signe)

par contre j'ai pas assez d'info pour dire à coup sûr comment les bits suivants vont être interprètés...

mais 0000000000000000000001 devrait être équivalent à 1/(2^20), donc 0,4 devrait être équivalent à 0000100000000000000000 (enfin, je crois)
9
Merci de ton aide...

...tu sais pas s'il existe des logiciels qui peuvent faire la conversion ?
10
Ben avec un papier et un crayon + la calculette de windows, tu devrais pouvoir t'en sortir