Vous êtes sur la page 1sur 13

LEVEL #1

Tout est bits!

Licence CC BY-NC-SA (J. DENIS)


BInary digiT

Plus petite unité logique utilisée en informatique (cf. "atome")

Autorise uniquement 2 états : 1/0, on/off, true/false, yes/no,… (convention, abstraction)

TOUT en informatique revient au final à manipuler des bits

La complexité est masquée par les langages de programmation

Chaînes binaires : bit (b), byte (B), octet (o)

Exemple : 01110101

Notations : hexadécimale (base 16) et octale (base 8)

Une chaîne binaire ne donne, intrinsèquement, aucune information sur son sens
Nombre entier, décimal, positif, négatif, caractère alphabétique, instruction processeur, pixel, couleur,...
Exemples d'encodage binaire sur 1 octet
Nombre entier positif
102 101 100 27 26 25 24 23 22 21 20
1 1 7 0 1 1 1 0 1 0 1

Nombre entier négatif : "sign bit"


102 101 100 27 26 25 24 23 22 21 20
- 1 1 7 1 1 1 1 0 1 0 1

Nombre entier négatif : complément à 1 (bitwise NOT)


102 101 100 27 26 25 24 23 22 21 20
- 1 1 7 1 0 0 0 1 0 1 0

Nombre entier négatif : complément à 2 (bitwise NOT + 1)


102 101 100 27 26 25 24 23 22 21 20
- 1 1 7 1 0 0 0 1 0 1 1

Caractère alphabétique : ASCII


27 26 25 24 23 22 21 20
u 0 1 1 1 0 1 0 1
U 0 1 0 1 0 1 0 1
Licence CC BY-NC-SA (J. DENIS)
Exemples d'opération sur 1 octet

102 101 100 27 26 25 24 23 22 21 20


1 1 7 0 1 1 1 0 1 0 1
+ 0 3 2 ADD 0 0 1 0 0 0 0 0
1 4 9 1 0 0 1 0 1 0 1

102 101 100 27 26 25 24 23 22 21 20


1 1 7 0 1 1 1 0 1 0 1
- 0 3 2 ADD 1 1 1 0 0 0 0 0 Comp 2
8 5 0 1 0 1 0 1 0 1

102 101 100 28 27 26 25 24 23 22 21 20


1 1 7 0 1 1 1 0 1 0 1
+ 1 6 0 ADD 1 0 1 0 0 0 0 0
2 7 7 1 0 0 0 1 0 1 0 1

= 2110

Licence CC BY-NC-SA (J. DENIS)


Notation

Base 2 (binaire) Base 8 (octale) Base 10 (décimale) Base 16 (hexadécimale)


0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10

Exemple 10112 = 1x23 + 0x22 + 1x21 + 1x20 = 1x8 + 0x4 + 1x2 + 1 = 8 + 2 + 1 = 1110
Joke

Il y a seulement 10 types de personnes


dans le monde : ceux qui comprennent le
binaire et les autres
Quizz des morts-vivants

If only DEAD people understand hexadecimal, how many people


understand hexadecimal?
Base 10 (décimale) Base 16 (hexadécimale)
0 0
DEAD16 1 1

= (13x163) + (14x162) + (10x161) + (13x160) 2 2


3 3
= (13x4096) + (14x256) + (10x16) + (13x1)
4 4
= 53248 + 3584 + 160 + 13
5 5
= 57005 6 6
7 7
8 8
9 9
10 A
11 B
12 C
13 D
14 E
15 F
Multiplicateurs

Préfixe Symbole Facteur Préfixe Symbole Facteur

kilo k 103 ou 1000 kibi Ki 210 ou 1024

mega M 106 ou 10002 mebi Mi 220 ou 10242

giga G 109 ou 10003 gibi Gi 230 ou 10243

tera T 1012 ou 10004 tebi Ti 240 ou 10244

peta P 1015 ou 10005 pebi Pi 250 ou 10245

exa E 1018 ou 10006 exbi Ei 260 ou 10246

zetta Z 1021 ou 10007 zebi Zi 270 ou 10247

yotta Y 1024 ou 10008 yobi Yi 280 ou 10248


Liens avec le processeur

Instructions (machine code) différentes selon les familles de processeurs

Endianness = "sens de lecture" (little-endian ou big-endian)

"Word" = unité de traitement (32 ou 64 bits souvent actuellement)


Normalisation

Conventions entre acteurs (états, universités, entreprises,...)

Permet l'interopérabilité (ex: clé USB, site web, représentations alphanumériques,...)

Permet le morcellement d'un "ordinateur" entre de multiples constructeurs (RAM, HDD,...)

Permet le secret industriel (boîte noire ok tant qu'on connaît les liens avec l'extérieur)

Implique de nombreuses institutions nationales et internationales telles :

• IEEE-SA (ethernet, wifi, bluetooth,...)


• IETF (IP, TCP, UDP, ICMP,...)
• ANSI (charset, FORTRAN,...)
• IEC (USB, fibre optique, VHS,...)
• ISO (SQL, CD-ROM, C,...)
• ECMA (Javascript, C#,...)
• W3C (HTML, CSS, XML, SVG,...)

Mais ce ne sont que des conventions...


Programmation

OS offre un berceau pour les logiciels (system call, API, framework,…)

Envoi d'instructions au processeur (grande dépendance à l'architecture CPU : x86, ARM,…)

Langages "haut niveau" (C#, Java,…) VS "bas niveau" (Assembly code,…)

Plutôt relatif au niveau d'abstraction proposé

Dissocié de "proche du matériel" ou non (cf. C, Rust,...)

Mise en avant de certains paradigmes de programmation (OO, func,...)

Au final, uniquement chaînes binaires envoyées au processeur


Language HL vs Assembly code vs Machine code

Location Instruction Instruction Instruction


Hex Code Binary Code Hex
opcode opérande
int a, b, c; ORG 100 100 0010000100000100 2104 LDA 104
a = 83; LDA A
101 0001000100000101 1105 ADD 105
b = -2; ADD B
c = a + b; STA C 102 0011000100000110 3106 STA 106
HLT
103 0111000000000001 7001 HLT
A, DEC 83
B, DEC –2 104 0000000001010011 0053 operand
C, DEC 0
105 1111111111111110 FFFE operand
END
106 0000000000000000 0000 operand

16 bits (word)

CPU
Cf. table du circuit intégré 74181
(en imaginant des opérandes de 16 bits) 0000000001010011 1111111111111110
M=0
Cn = 0 001001 ALU
S0 = 1
0000000001010001
S1 = 0
S2 = 0
S3 = 1
Licence CC BY-NC-SA (J. DENIS)

Vous aimerez peut-être aussi