Les 8 algorigrammes utilisant les masques binaires

 

Le thème Les algorigrammes utilisant les masques binaires du QCM Évaluation générale de fin de première ne possède que 8 types d'algorigrammes. Certains d'entre eux existent en différentes variantes mais leur analyse reste la même.

 

Rappel :

 

Dans le thème Les algorigrammes utilisant les masques binaires, les masques binaires permettent d'effectuer un test sur les 3 bits de poids faible d'un nombre n : bits de rang 0, 1 ou 2 seulement.

Exemple de masques binaires pour différentes valeurs de n :

Masque binaire
dans Flowcode
Test équivalent
Valeur de n
Résultat du test
L'algorigramme est
dirigé vers la branche
Décimal
Binaire
Numérique
Logique
n AND 1
n est-il impair ?
6
0110
0
faux
Non
5
0101
1
vrai
Oui
n AND 2
le bit de rang 1 = 1 ?
6
0110
2
vrai
Oui
5
0101
0
faux
Non
n AND 3

parmi les bits de rang 0 et 1
y en-t-il au moins un à 1 ?

 

n est-il un nombre autre
qu'un multiple de 4 ?

8
1000
0
faux
Non
9
1001
1
vrai
Oui
10
1010
2
vrai
Oui
11
1011
3
vrai
Oui
n AND 4
le bit de rang 2 = 1 ?
9
1001
0
faux
Non
13
1101
4
vrai
Oui

 

 

Voici les 8 algorigrammes commentés :

 

Algorigramme 1

Le test n AND 3 sera vrai si les 2 bits de poids faible de n ne sont pas nuls tous les deux (au moins un à 1)

Donc x vaut 1 si au moins un des deux bits de poids faible de n vaut 1, et 0 dans le cas contraire.

En clair x=0 si l'écriture en binaire de n finit par 00 : xxxxxx00, c'est-à-dire si n est multiple de 4

 

 

 

Algorigramme 2

Cet algorigramme existe en 2 variantes :

 

Dans les deux cas il suffit de remarquer que le test x XOR n est strictement équivalent à x est différent de n

A retenir : x XOR n sera nul seulement si x=n (principe du OU-Exclusif : la sortie est nulle si les entrées sont égales)

 

 

 

Algorigramme 3

Le test n AND 1 est vrai si le bit de rang 0 de n vaut 1

Le test n AND 2 est vrai si le bit de rang 1 de n vaut 1

Le test n AND 4 est vrai si le bit de rang 2 de n vaut 1

On en déduit que cet algorigramme compte dans la variable x le nombre de bits à 1 parmi les 3 bits de poids faible de n

Exemples :

Si n = 0(10) = 00000000(2) alors x = 0

Si n = 1(10) = 00000001(2) alors x = 1

Si n = 2(10) = 00000010(2) alors x = 1

Si n = 3(10) = 00000011(2) alors x = 2

Si n = 4(10) = 00000100(2) alors x = 1

Si n = 5(10) = 00000101(2) alors x = 2

Si n = 6(10) = 00000110(2) alors x = 2

Si n = 7(10) = 00000111(2) alors x = 3

Si n = 8(10) = 00001000(2) alors x = 0

etc.

Il n'y a donc que 4 valeurs possibles pour x : 0, 1, 2 ou 3

 

 

Algorigramme 4

Le test i AND 1 est vrai si le bit de rang 0 de i vaut 1, c'est-à-dire si le nombre i est impair.

Le test i AND 1 est donc strictement équivalent à i est impair

Rappel : le test i XOR n est strictement équivalent à i est différent de n

Cet algorigramme compte donc tous les nombres impairs compris entre 0 et n.

 

Voici un algorithme sans masques binaires équivalent à cet algorigramme 4 :

x=0

i=0

Tant que i est différent de n

Si i est impair

incrémenter x

Fin du test Si

incrémenter i

Fin de la boucle Tant que

 

 

 

Algorigramme 5

Test n AND 1 : si le bit de rang 0 du nombre n vaut 1 on ajoute 1 à la variable x

Test n AND 2 : si le bit de rang 1 du nombre n vaut 1 on ajoute 2 à la variable x

Test n AND 4 : si le bit de rang 2 du nombre n vaut 1 on ajoute 4 à la variable x

Enfin, si les 3 bits de poids faible de n sont tous nuls on enlève 1 à x : cas où on répond NON aux 3 tests

 

 

 

Algorigramme 6

Si i est impair on répond OUI au test i AND 1

Si i est pair on répond NON au test i AND 1

A retenir : le test i AND 1 est strictement équivalent à i est impair

On teste ici la parité des nombres compris entre 0 et b (intervalle de la variable i), 0 et b compris :

0 ≤ i ≤ b

 

 

 

Algorigramme 7

Cet algorigramme existe en 8 variantes

Pour les 8 variantes de l'algorigramme 7 la variable i est un entier compris entre 0 et b, 0 et b non compris :

0 < i < b     soit     1 ≤ i ≤ b-1

 

Dans les deux algorigrammes suivants on teste le bit de rang 0 de i (test i AND 1) ce qui revient à tester sa parité.

Le seule différence entre ces deux algorigrammes est la position des réponses OUI et NON dans le test :

Rappel : le test i AND 1 est strictement équivalent à i est impair

 

 

 

Dans les deux algorigrammes suivants on teste le bit de rang 1 de i (test i AND 2).

Le seule différence entre ces deux algorigrammes est la position des réponses OUI et NON dans le test :

 

 

 

Dans les deux algorigrammes suivants on teste en même temps les bits de rang 0 et 1 de i (test i AND 3).

Rappel : le test i AND 3 est équivalent à i n'est pas un multiple de 4

Le seule différence entre ces deux algorigrammes est la position des réponses OUI et NON dans le test :

 

 

 

Dans les deux algorigrammes suivants on teste le bit de rang 2 de i (test i AND 4).

Le seule différence entre ces deux algorigrammes est la position des réponses OUI et NON dans le test :

 

 

 

 

 

 

Algorigramme 8

Cet algorigramme existe en 2 variantes

Le seule différence entre ces deux algorigrammes est la position des réponses OUI et NON dans le test :

 

Par rapport aux 7 premiers algorigrammes, ici le masque binaire b est variable :

Si b=1 on teste le bit de rang 0 de i (détection des multiples de 2)

Si b=2 on teste le bit de rang 1 de i

Si b=4 on teste le bit de rang 2 de i

Et si b=3 on teste à la fois les bits de rang 0 et 1 de i (détection des multiples de 4)

La valeur de b qui est fixe est donnée dans la question et vaut soit 1, soit 2, soit 3, soit 4.

 

De plus la variable i utilisée dans le masque binaire est un entier compris entre 0 et a, 0 et a non compris :

0 < i < a     soit     1 ≤ i ≤ a-1

 

 

Dans la suite des nombres binaires ci-dessous on peut remarquer que :

Le bit de rang 1 du nombre N vaut 0 si N est multiple de 4 ou si N est (un multiple de 4) +1

Et le bit de rang 2 du nombre N vaut 0 dans les 4 cas suivants :

N est multiple de 8

N est (un multiple de 8) +1

N est (un multiple de 8) +2

N est (un multiple de 8) +3

Ces remarques permettent de déterminer rapidement par le calcul si les tests N AND 2 et N AND 4 sont vrais ou faux

 Rappel des 256 premiers entiers écrits en binaire naturel 
N en décimal
N en binaire naturel
N en décimal
0
00000000
0
1
00000001
1
2
00000010
2
3
00000011
3
4
00000100
4
5
00000101
5
6
00000110
6
7
00000111
7
8
00001000
8
9
00001001
9
10
00001010
10
11
00001011
11
12
00001100
12
13
00001101
13
14
00001110
14
15
00001111
15
16
00010000
16
17
00010001
17
18
00010010
18
19
00010011
19
20
00010100
20
21
00010101
21
22
00010110
22
23
00010111
23
24
00011000
24
25
00011001
25
26
00011010
26
27
00011011
27
28
00011100
28
29
00011101
29
30
00011110
30
31
00011111
31
32
00100000
32
33
00100001
33
34
00100010
34
35
00100011
35
36
00100100
36
37
00100101
37
38
00100110
38
39
00100111
39
40
00101000
40
41
00101001
41
42
00101010
42
43
00101011
43
44
00101100
44
45
00101101
45
46
00101110
46
47
00101111
47
48
00110000
48
49
00110001
49
50
00110010
50
51
00110011
51
52
00110100
52
53
00110101
53
54
00110110
54
55
00110111
55
56
00111000
56
57
00111001
57
58
00111010
58
59
00111011
59
60
00111100
60
61
00111101
61
62
00111110
62
63
00111111
63
64
01000000
64
65
01000001
65
66
01000010
66
67
01000011
67
68
01000100
68
69
01000101
69
70
01000110
70
71
01000111
71
72
01001000
72
73
01001001
73
74
01001010
74
75
01001011
75
76
01001100
76
77
01001101
77
78
01001110
78
79
01001111
79
80
01010000
80
81
01010001
81
82
01010010
82
83
01010011
83
84
01010100
84
85
01010101
85
86
01010110
86
87
01010111
87
88
01011000
88
89
01011001
89
90
01011010
90
91
01011011
91
92
01011100
92
93
01011101
93
94
01011110
94
95
01011111
95
96
01100000
96
97
01100001
97
98
01100010
98
99
01100011
99
100
01100100
100
101
01100101
101
102
01100110
102
103
01100111
103
104
01101000
104
105
01101001
105
106
01101010
106
107
01101011
107
108
01101100
108
109
01101101
109
110
01101110
110
111
01101111
111
112
01110000
112
113
01110001
113
114
01110010
114
115
01110011
115
116
01110100
116
117
01110101
117
118
01110110
118
119
01110111
119
120
01111000
120
121
01111001
121
122
01111010
122
123
01111011
123
124
01111100
124
125
01111101
125
126
01111110
126
127
01111111
127
128
10000000
128
129
10000001
129
130
10000010
130
131
10000011
131
132
10000100
132
133
10000101
133
134
10000110
134
135
10000111
135
136
10001000
136
137
10001001
137
138
10001010
138
139
10001011
139
140
10001100
140
141
10001101
141
142
10001110
142
143
10001111
143
144
10010000
144
145
10010001
145
146
10010010
146
147
10010011
147
148
10010100
148
149
10010101
149
150
10010110
150
151
10010111
151
152
10011000
152
153
10011001
153
154
10011010
154
155
10011011
155
156
10011100
156
157
10011101
157
158
10011110
158
159
10011111
159
160
10100000
160
161
10100001
161
162
10100010
162
163
10100011
163
164
10100100
164
165
10100101
165
166
10100110
166
167
10100111
167
168
10101000
168
169
10101001
169
170
10101010
170
171
10101011
171
172
10101100
172
173
10101101
173
174
10101110
174
175
10101111
175
176
10110000
176
177
10110001
177
178
10110010
178
179
10110011
179
180
10110100
180
181
10110101
181
182
10110110
182
183
10110111
183
184
10111000
184
185
10111001
185
186
10111010
186
187
10111011
187
188
10111100
188
189
10111101
189
190
10111110
190
191
10111111
191
192
11000000
192
193
11000001
193
194
11000010
194
195
11000011
195
196
11000100
196
197
11000101
197
198
11000110
198
199
11000111
199
200
11001000
200
201
11001001
201
202
11001010
202
203
11001011
203
204
11001100
204
205
11001101
205
206
11001110
206
207
11001111
207
208
11010000
208
209
11010001
209
210
11010010
210
211
11010011
211
212
11010100
212
213
11010101
213
214
11010110
214
215
11010111
215
216
11011000
216
217
11011001
217
218
11011010
218
219
11011011
219
220
11011100
220
221
11011101
221
222
11011110
222
223
11011111
223
224
11100000
224
225
11100001
225
226
11100010
226
227
11100011
227
228
11100100
228
229
11100101
229
230
11100110
230
231
11100111
231
232
11101000
232
233
11101001
233
234
11101010
234
235
11101011
235
236
11101100
236
237
11101101
237
238
11101110
238
239
11101111
239
240
11110000
240
241
11110001
241
242
11110010
242
243
11110011
243
244
11110100
244
245
11110101
245
246
11110110
246
247
11110111
247
248
11111000
248
249
11111001
249
250
11111010
250
251
11111011
251
252
11111100
252
253
11111101
253
254
11111110
254
255
11111111
255

 

 

www.gecif.net

© Avril 2017