Skip to content

Instantly share code, notes, and snippets.

@h00s
Created June 1, 2016 19:32
Show Gist options
  • Save h00s/859958d77f1ea1a803f2b82a532b2c6f to your computer and use it in GitHub Desktop.
Save h00s/859958d77f1ea1a803f2b82a532b2c6f to your computer and use it in GitHub Desktop.
8 bitni registar
dvojni komplement
109 i 53
Idemo te brojeve pretvoriti u dvojni komplement.
Budući da su to pozitivni brojevi, pretvorba nije teška, treba najlijeviji bit postaviti 0 (jer je broj pozitivan), a ostalih 7 bitova binarnu vrijednost tih brojeva.
P 64 32 16 8 4 2 1
109 -> 0 1 1 0 1 1 0 1
dakle: 01101101
P 64 32 16 8 4 2 1
53 -> 0 0 1 1 0 1 0 1
dakle: 00110101
Sada moramo zbrojiti ta dva binarna broja i to sto zbrojimo ce biti broj zapisan dvojnim komplementom.
01101101
+ 00110101
----------
10100010
0 + 0 = 0
0 + 1 = 1
1 + 1 = 0 i 1 dalje
1 + 1 + 1 = 1 i 1 dalje
Dobili smo broj: 10100010
Broj je u dvojnom komplementu, prvi bit nam označava predznak. Budući da je prvi bit 1, znači da je broj negativan i njegovu vrijednost moramo dobiti tako da radimo negaciju broja i +1.
10100010
--------
neg 01011101
01011101
+ 00000001
--------
01011110
64 32 16 8 4 2 1
1 0 1 1 1 1 0 = 64 + 16 + 8 + 4 + 2 = 94
vrijednost je 94 i predznak negativni, dakle rezultat je -94.
Čudno je, ali zbroj 109 i 53 daju negativan broj -94. Zašto? Ograničenje registra, premalo bitova...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment