Jak počítače pracují se zápornými čísly?
Znaménkový bit
Jedna možnost je vzít jeden bit zkraje a říct, že reprezentuje plusovou nebo mínusovou hodnotu.
Například:
- 42 = 10101010
- 1 = znaménko plus (+) symbolizující kladné číslo
- 0101010 = hodnota 42
No a záporné číslo -42 by vypadalo takto.
- -42 = 00101010
- 0 = znaménko minus (-) symbolizující záporné číslo
- 0101010 = hodnota 42
Kladná a záporná nula
Má to však problém: kladnou a zápornou nulu.
0 = 1|0000000 …. +0?
0 = 0|0000000 …. -0?
Co se má stát, když sečtete plusovou nulu a negativní nulu? Co když je vynásobíte? Co když vynásobíte kladné číslo zápornou nebo kladnou nulou?
Tento způsob se nepoužívá 1 protože kladná nebo záporná nula nemá reálný základ. Nula je jenom jedna a nemá znaménko.
Dvojkový doplněk
Pokud máte 8 bitový rozsah, tak začátek vypadá úplně stejně, jako kdybyste počítali mezi dvěma číselnými soustavami.
0 = 00000000
1 = 00000001
2 = 00000010
3 = 00000011
…
42 = 00101010
Ale: jakmile vyplníte všechny bity kromě prvního na 1, uděláte následující.
- Přičtete k číslu +1
- Změníte znaménko na mínus
- Začnete počítat pozpátku
Tzn.
126 = 01111110
127 = 01111111
-128 = 10000000
-127 = 10000001
-126 = 10000010
-125 = 10000011
…
-1 = 11111111
V kapitole o desetinných číslech zjistíte, že to není zas tak úplně pravda. ↩︎