Exercice sur l'exponentiation rapide
bonjour tout le monde, je suis nouvelle dans le forum et j'ai une petite question en espérant que quelqu'un pourrait m'aider :
je suis entrain de réviser mes examens et je fais des exercices supplémentaire donné par mon prof et je beug sur une question
- il faut écrire un algo qui prend en entrée un entier et qui stocke dans un tableau sa décomposition en base 2 , je n'arrive pas à comprendre comment on pourrais faire cela ?
merci en avance
Ça va sans dire, mais ça va mieux en le visualisant
Apprendre en ligne : Les bases décimale, binaire et hexadécimale
Code:
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 32 33 34 35 36 37 38 39
| Simulation :
42 : 2 = 21 reste 0 (20 = 0)
21 : 2 = 10 reste 1 (21 = 2)
10 : 2 = 5 reste 0 (22 = 4)
5 : 2 = 2 reste 1 (23 = 8)
2 : 2 = 1 reste 0 (24 = 2)
reste 1 (25 = 32)
________
42
E -> [E]ntier
I -> [I]ndice courant
R -> [R]este
.---------------------.
| E = ? | -> [E]ntier = Saisie dun entier
D_PROG | T = occ * 16 | -> Déclaration [T]able de 16 occurrences initialisées à zéro
| E :: 65535 | -> Test [E]ntier (maximum)
> 65535 .----------+----------. <= 65535
.-------------------<?>-------------------.
| .----------+----------.
| D_DIV | I = 16 | -> Initialisation indice I
| .----------+----------.
| |-------------------.
| .----------+----------. | E=42/2 E=21/2 E=10/2 E=5/2 E=2/2
.----------+----------. | E = E / 2 | | R=0 R=1 R=0 R=1 R=0
| MESSAGE | T_DIV | T(I) = R | | T(16)=0 T(15)=1 T(14)=0 T(13)=1 T(12)=0
.----------+----------. | I = I - 1 | | I=15 I=14 I=13 I=12 I=11
| | E :: 1 | | E=21 E=10 E=5 E=2 E=1
| .----------+----------. E > 1 |
| <?>------------------.
| .----------+----------.
| F_DIV | T(I) = E | T(11)=1
| .----------+----------.
.--------------------+--------------------.
.----------+----------.
F_PROG | Ø |
.---------------------. |