- A combien de bits correspondent 4 octets ?
8 bits par octet. Il faut donc 4*8 = 32 bits.
- Donner la valeur de A à l'aide de ses 4 octets : 200 50 0 250 .
A = 200*256**3 + 50*256**2 + 0*256 + 250
A = 3 358 720 250
Plus de 3 milliards.
- Donner la valeur de B à l'aide de ses 4 octets : 5 10 20 150 .
B = 5*256**3 + 10*256**2 + 20*256 + 150
B = 84 546 710
Plus de 84 millions.
- Expliquer s'il y a eu dépassement lors du calcul par le programme sachant que A * B donne C = 556014204.
On peut effectuer la vérification puisque B n'est pas nul. On peut vérifier que C // B donne bien A (pour changer un peu).
C // B = 556014204 // 84546710 = 6
On n'obtient pas la valeur de A. Nous avons donc subi un dépassement.
- Donner le résultat C = A * B en le réalisant sur la console Python. Vérifier que Python réponde C = 283 968 746 947 877 500. Expliquer s'il y a eu dépassement lors de ce calcul.
>>> C = 3358720250 * 84546710
>>> C
283968746947877500
>>> C // 84546710
3358720250
On peut effectuer la vérification puisque B n'est pas nul. On peut vérifier que C // B donne bien A (pour changer un peu).
C // B = 283 968 746 947 877 500 // 84546710 = 3 358 720 250
On obtient bien la valeur de A. Python a réalisé le calcul sans dépassement.
- Combien d'octets sont nécessaires à ce calcul ? 1, 2, 4, 8 ou 16 ?
On doit obtenir 283 968 746 947 877 500, soit plus de 283 millions de milliards. C'est beaucoup...
>>> C = 3358720250 * 84546710
>>> C
283968746947877500
>>> C // 1E9
283968746.0
>>> C // 1E15
283.0
Avec un octet, on peut aller jusqu'à 28-1, soit 255.
Pas suffisant.
Avec deux octets, on peut aller jusqu'à 216-1, soit 65 535.
Pas suffisant.
Avec quatre octets, on peut aller jusqu'à 232-1, soit 4 294 967 295
Plus de 4 milliards.
Pas suffisant.
Avec huit octets, on peut aller jusqu'à 264-1, soit 18 446 744 073 709 551 615.
Plus de 18 milliards de milliards.
C'est suffisant.