Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Stockage et addition de variables. Conversion de chiffres binaires en décimaux.

12 réponses
Avatar
JeanMickey
Bonjour,
J'ai essay=E9 de faire un programme de conversion de chiffres
binaires en chiffres d=E9cimaux. Malheureusement, dans la partie marqu=E9e
par un commentaire ('), je ne parviens pas =E0 stocker une variable
temporaire ni =E0 l'ajouter =E0 d'autres. Quelqu'un peut-il m'aider? Voici
la partie du programme o=F9 le probl=E8me se pose :

NbreBinaire =3D InputBox("Choisissez un nombre binaire ")
LongNbreBinaire =3D Len(NbreBinaire)
For i =3D LongNbreBinaire To 1 Step -1
If Mid(NbreBinaire, i, 1) =3D 0 Then
ChiffreDecimal1 =3D 0 * (2 ^ (LongNbreBinaire - 1))
ElseIf Mid(NbreBinaire, i, 1) =3D 1 Then
VarTemp =3D 0
ChiffreDecimal =3D 1 * (2 ^ (LongNbreBinaire - 1))

'La variable est stock=E9e mais je n'arrive pas =E0 l'aditionner =E0
d'autres
'par la suite et =E0 trouver le bon r=E9sultat

VarTemp =3D ChiffreDecimal
End If
Next i

Worksheets(3).Range("B2").Value =3D VarTemp

2 réponses

1 2
Avatar
garnote
Ave,

Commentaire apprécié. Merci.

Trêve de chinoiseries, était-elle bonne la fondue ? Si on trempe les
raviolis dans l'eau chaude d'une marmite , je suppute que les lèvres n'ont
pas été trempées que dans l'eau froide d'un verre ? :-)



Elle et moi mangé bonne fondue, trempé beaucoup lèvres dans
vino et ... ravis au lit ;-)

Serge






"Charabeuh" a écrit dans le message de news: %
Bonjour,

J'avoue mon oignon rance sur ce sujet.
Le type double, je crois, représente un nombre décimal sous la forme d'un
produit de 3 termes: un signe (1 bit), une puissance positive ou négative de
2 (11 bits) et une mantisse de la forme 1,m (52 bits). Un entier est donc
aussi converti en une représentation via la base 2.

Je ne sais pas à partir de quelle valeur d'entier la représentation
entier/double ne représente plus le même nombre.

De plus, il y a la représentation affichée par Excel qui passe
automatiquement à une représentation à exposant de 10 à partir d'une
certaine valeur (99 999 ..... 999) mais quid de la représentation interne ?

Je reconnais m'y perdre un peu. Tes fonctions semblent en effet aller plus
loin dans les grands entiers.

Toujours est-il que par sureté, je pense que si on manipule des entiers dans
un programme alors il vaut mieux typer ses variables en entier (simple ou
long) pour être certain de provoquer une erreur en cas de dépassement et
d'éviter les conversions sujettes à des effets d'approximation inconnus.

Quoi qu'il en soit, avec tes fonctions, je vais passer mes rentrées
bancaires en base disons 7 et laisser mes dépenses en base 10. Si, grâce à
tes fonctions, je présente à mon banquier mes comptes sous cette forme et
assez vite (très vite!), il ne devrait y voir que du feu et me féliciter
d'avoir redressé ma situation aussi rapidement. En passant, je pourrais
aussi lui demander comment vont bien les comptes de la banque ? Un petit
mot gentil à un banquier en difficulté ne mange pas de pain et lui mettrait
un peu de baume au coeur. D'ailleurs il pourra me dire si les pertes et les
prêts de l'état sont en type double ou s'il a fallu construire un nouveau
type. Pour mon propre compte le type Byte suffit largement.

Trêve de chinoiseries, était-elle bonne la fondue ? Si on trempe les
raviolis dans l'eau chaude d'une marmite , je suppute que les lèvres n'ont
pas été trempées que dans l'eau froide d'un verre ? :-)

Charabeuh




"garnote" a écrit dans le message de news:
En remplaçant Long par Double, la limite en base 10
passe de 999 999 999 ä 999 999 999 999 999.
M'enfin il me semble !

Public Function baseb10(n As String, b As Byte) As Double
Public Function base10b(n As Double, b As Byte) As String

Là c'est terminé pour de bon, fondue chinoise oblige ;-)

A+

Serge






Avatar
Charabeuh
Alors tout est bien !

:-))





"garnote" a écrit dans le message de
news:

Ave,

Commentaire apprécié. Merci.

Trêve de chinoiseries, était-elle bonne la fondue ? Si on trempe les
raviolis dans l'eau chaude d'une marmite , je suppute que les lèvres
n'ont
pas été trempées que dans l'eau froide d'un verre ? :-)



Elle et moi mangé bonne fondue, trempé beaucoup lèvres dans
vino et ... ravis au lit ;-)

Serge






"Charabeuh" a écrit dans le message de news:
%
Bonjour,

J'avoue mon oignon rance sur ce sujet.
Le type double, je crois, représente un nombre décimal sous la forme d'un
produit de 3 termes: un signe (1 bit), une puissance positive ou négative
de
2 (11 bits) et une mantisse de la forme 1,m (52 bits). Un entier est donc
aussi converti en une représentation via la base 2.

Je ne sais pas à partir de quelle valeur d'entier la représentation
entier/double ne représente plus le même nombre.

De plus, il y a la représentation affichée par Excel qui passe
automatiquement à une représentation à exposant de 10 à partir d'une
certaine valeur (99 999 ..... 999) mais quid de la représentation interne
?

Je reconnais m'y perdre un peu. Tes fonctions semblent en effet aller
plus
loin dans les grands entiers.

Toujours est-il que par sureté, je pense que si on manipule des entiers
dans
un programme alors il vaut mieux typer ses variables en entier (simple ou
long) pour être certain de provoquer une erreur en cas de dépassement et
d'éviter les conversions sujettes à des effets d'approximation inconnus.

Quoi qu'il en soit, avec tes fonctions, je vais passer mes rentrées
bancaires en base disons 7 et laisser mes dépenses en base 10. Si, grâce
à
tes fonctions, je présente à mon banquier mes comptes sous cette forme et
assez vite (très vite!), il ne devrait y voir que du feu et me féliciter
d'avoir redressé ma situation aussi rapidement. En passant, je pourrais
aussi lui demander comment vont bien les comptes de la banque ? Un petit
mot gentil à un banquier en difficulté ne mange pas de pain et lui
mettrait
un peu de baume au coeur. D'ailleurs il pourra me dire si les pertes et
les
prêts de l'état sont en type double ou s'il a fallu construire un nouveau
type. Pour mon propre compte le type Byte suffit largement.

Trêve de chinoiseries, était-elle bonne la fondue ? Si on trempe les
raviolis dans l'eau chaude d'une marmite , je suppute que les lèvres
n'ont
pas été trempées que dans l'eau froide d'un verre ? :-)

Charabeuh




"garnote" a écrit dans le message de
news:
En remplaçant Long par Double, la limite en base 10
passe de 999 999 999 ä 999 999 999 999 999.
M'enfin il me semble !

Public Function baseb10(n As String, b As Byte) As Double
Public Function base10b(n As Double, b As Byte) As String

Là c'est terminé pour de bon, fondue chinoise oblige ;-)

A+

Serge










1 2