Hogyan kell számrendszernél összeadni meg kivonni?
120
-91
Pl.. és nem olyan okos válaszokat várok, hogy 120-91=29, mert azt én is tudom..:D Sőt, annyit is tudok, hogy a 120at el kell osztogatni mindig 2vel, majd a maradékot jobb oldalra felírni.. meg vmi olyasmit is, hogy utána át kell alakítani 2es komplemenssé, de onnantól nekem magas. Köszi, aki segít!
Kettes komplemenssé úgy alakítasz, hogy minden bitet (helyiértéket) megfordítasz, és hozzáadsz egyet.
Ha informatikai szempontból kérdezed, akkor először találd ki, hány biten ábrázolod az egészeket. Írd fel kettes komplemensként őket (a negatívat kell csak átalakítani), és utána simán add össze. Ha a legnagyobb helyiérték 1-es lett (és nincs carry/overflow), akkor az negatív. Ekkor megint megcsinálod a kettes kompl. trükköt, és megkapod a negatív eremény abszolút értékét.
120 / 2 = 60 marad: 0
60 / 2 = 30 marad: 0
30 / 2 = 15 marad: 0
15 / 2 = 7 marad: 1
7 / 2 = 3 marad: 1
3 / 2 = 1 marad: 1
1 / 2 = 0 marad: 1
A maradékok lentről felfelé: 1111000
Legyen 8 biten ábrázolva: 0111 1000
(Széthúztam, hogy jobban látszódjon, és eléírtam még egy nullát.)
A 91 ugyanígy: 0101 1011
A -91:
0101 1011
1010 0100 / invertálás
1010 0101 / +1, ez a -91, kettes komplemens alakban.
Összeadjuk:
_1010 0101
_0111 1000
-------------------
10001 1101
A felső, 9. helyiértéket simán levágjuk.
Így a 8 bites eredmény felső helyiértéke 0, vagyis pozitív szám lett, ami amúgy a 29.
(Remélem nem néztem el semmit.)
köszönöm :)
zöld mancs ;)
A lényeg, hogy egy processzort nem érdekli, hogy a két szám sima pozitív egész, vagy kettes komplemens előjeles, a műveleteket ugyanúgy hajtja végre, és mindenképpen helyes eredmény jön ki. Persze azért visszajelez, hogy pozitív egészként volt-e túlcsordulás a felső utáni bitre (carry), és hogy kettes komplemensként volt-e túlcsordulás a felső, előjel bitbe (overflow). Ezután a program majd eldönti, melyiket használja fel, ő tudja, milyen számok is voltak valójában, az már értelmezés kérdése. A művelet maga viszont ugyanúgy hajtódik végre mindkét esetben.
:)
Jaj..:DD
Nekem elég, ha dogában ki tudom számolni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!