Binarno oduzimanje

poruka: 10
|
čitano: 35.341
|
moderatori: DrNasty, pirat, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Binarno oduzimanje

Malo radim sa binarnim brojevima i sve sam savladao osim oduzimanja. Znam da postoji "normalan" način i onaj sa dvojnim komplementom. E sad, pod normalnim načinom kad radim nejasno mi je kada dođem do "0-1" kombinacije, znam da je rezultat toga 1, i da pamtim 1 ali šta trebam da uradim sa tom jedinicom kod naredne kombinacije.

 

Npr:

 

 10001

-01101

  ?????      

 

Krećem sa desna:

1-1=0

0-0=0

0-1=1, jedan pamtim

kako dalje, šta trebam da uradim sa tom jedinicom iz ove kombinacije u narednoj?

 

A metoda dvojnog komplementa, dali može detaljnije objašnjenje i primer.

 

15 godina
neaktivan
offline
Binarno oduzimanje

Evo objašnjenja dvojnog komplementa

 

Ako npr imamo   100101

                         -001010

 

Onda prvo onaj broj koji oduzimamo znači 001010, od njega napravimo komplement onda je to 110101, a zatim tom broju dodamo 1 binarni.

 

Znači    110101

           +         1

            110111

 

i zatim taj broj pribrojimo broju 100101 onom broju od kojeg smo željeli oduzeti oduzeti.

 

 

npr. 100010

      -    1000

 

Kad radimo komplement 1000 moramo dobiti znamenaka isto onoliko koliko ih ima broj od kojeg oduzimamo, znači ne samo 1000 pretvoriti u 0111, nego moramo uzeti u obzir da su ispred 1000 još dvije nule, iz toga je komplement 110111.

Poruka je uređivana zadnji put uto 15.12.2009 22:46 (foi).
15 godina
neaktivan
offline
RE: Binarno oduzimanje
foi kaže...

Evo objašnjenja dvojnog komplementa

 

Ako npr imamo   100101

                         -001010

 

Onda prvo onaj broj koji oduzimamo znači 001010, od njega napravimo komplement onda je to 110101, a zatim tom broju dodamo 1

 

Znači    110101

           +         1

            110111

 

i zatim taj broj pribrojimo broju 100101 onom broju od kojeg smo željeli oduzeti oduzeti.

zaboravio si napomenut da na kraju kriza vodecu jedinicu

Fight to Win
16 godina
offline
RE: Binarno oduzimanje
Quark kaže...

Malo radim sa binarnim brojevima i sve sam savladao osim oduzimanja. Znam da postoji "normalan" način i onaj sa dvojnim komplementom. E sad, pod normalnim načinom kad radim nejasno mi je kada dođem do "0-1" kombinacije, znam da je rezultat toga 1, i da pamtim 1 ali šta trebam da uradim sa tom jedinicom kod naredne kombinacije.

 

Npr:

 

 10001

-01101

  ?????      

 

Krećem sa desna:

1-1=0

0-0=0

0-1=1, jedan pamtim

kako dalje, šta trebam da uradim sa tom jedinicom iz ove kombinacije u narednoj?

 

A metoda dvojnog komplementa, dali može detaljnije objašnjenje i primer.

 

Prvo, uvijek moraš računati s istim brojem znamenki, dodaje se onoliko nula ispred da se izjednače.

- komplement je jednostavan. Zamijena znamenki 0<->1 : 1<->0 (to sigurno znaš) -prvi komplement.

- tom broju dodaš jedan. (ovo može odmah, može u novi red ili na kraju operacije jer je zgodan podsjetnik za preljev. (-drugi kom.)

Na kraju samo 'otpadne' prva jedinica (najviša) i dobio si binarni rezultat.

 

:  10001 (+17)

: -_1101 (-13) dodajemo znamenke-'0'

: -01101 (-13)

:+10010 (I-komplement, jooš nedostaje '+1')

:

:  10001

:+10010

-----------

=100011  -ako sad dodamo jedan, to se slikovito zove 'rotacija' ili prva jedinica (koja se mora umanjiti) seli se na zadnje mjesto...

=> 0011   (+1)

:  +0001 

-------------

=   0100 (=4)

 

-po šolskom primjeru odmah iz I-komplementa dodaješ '1' i dobijaš II-komplement, ali ovako je malo 'logičnije.

 

-btw isto pravilo je za sve baze, tj. možeš i s dekadskim sistemom (komplement 3=7, 2=8 itd..)

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
17 godina
neaktivan
offline
Binarno oduzimanje

Ili za brzo pretvaranje u 2-komplement: krećući od desna na ljevo poslje prve jedinice na koju naletiš invertiraš znamanke. Dakle, imaš recimo: 1101010101110 - 0010101010010 (boldano je prva jedinica, poslje nje invertiraš 0 i jedinice prema ljevo). Kao što su ti već rekli, oduzimaš tak da suptrahend pretvoriš u 2-komplement pa pribrojiš minuendu. Ne zaboravi preljev (overflow)!

 

 0011     (+3)      0011

-0010    -(+2)   +1110

              (+1)   1|0001    <-- boldano je overflow, njega odbacuješ, dakle rješenje je 0001.

 

Imaj na umu da sam ovdje koristio brojeve sa predznakom - 1 je za negativni predznak, 0 je za pozitivni. U ovom primjeru rješenje je pozitivno - 0 001 - prva nula je za predznak, a 001 je broj jedan. Dakle ovom metodom se mogu prikazati negativni i pozitivni brojevi od 0-7, a ne kak bi očekivao, od 0-15.

"Tako je" - povikase seljaci i slozno glavama razbise zid
16 godina
offline
RE: Binarno oduzimanje

možda ti pomogne Skripta i Stranica za vježbanje sa raznim brojevnim sustavima. :D

17 godina
neaktivan
offline
Binarno oduzimanje

Hvala na korisnim uputama u vezi drugog komplementa, taj način sam savladao.

 

Edit:

Još mi je samo nejasno jedno u vezi "normalnog" oduzimanja, tj. bez prvog i drugog komplementa. To mi inače nebi bilo važno ali je brže tako radit kod dijeljenja.


Vratiću se na svoj prvi zadatak:

 

 10001

-01101

 

Sa desna: 1-1=0,

                0-0=0,

                0-1=1 pišem, (jedan oduzimam od narednog broja)

U narednoj kombinaciji je opet 0-1, ali odakle da oduzmem tu jedinicu iz prethodne kombinacije kada je na poziciji umanjitelja '0'?

Nadam se da sam jasno objasnio svoj problem.

Poruka je uređivana zadnji put sri 16.12.2009 18:04 (Quark).
16 godina
odjavljen
offline
RE: Binarno oduzimanje

  10001

-01101

 

 

idemo s desna:

1-1 = 0

0-0 = 0

0-1 = 1, pamtim 1

0-1-1 = 0, pamtim 1 (ona druga jedinica je ona koju sam prethodni korak pamtio, kao i kod zbrajanja, samo je oduzimam)

1-0-1 = 0

 

Rezultat je 00100

 

Ovo možemo generalno napisat:

znamenka broja od kojeg oduzimamo - znamenka broja kojeg oduzimamo - znamenka koju smo pamtili u prošlom koraku

Ovako bi to izgledalo:

1-1-0 = 0 pamtim 0

0-0-0 = 0 pamtim  0

0-1-0 = 1 pamtim 1

0-1-1 = 0 pamtim 1

1-0-1 = 0 pamtim 0

 

u zadnjem koraku, ako pamtiš 1, znaći da je rezultat prošao kroz nulu.

U životu ne postoje pobjednici, samo preživjeli.
17 godina
neaktivan
offline
Binarno oduzimanje

Shvatio sam oba načina, evo da još nadodam kako se oduzima sa negativnim brojevima:

 

Prvo normalno oduzmemo dva broja:

 

  01100 - 12

 -10000 - 16

111100

 

Rezultat invertiramo počevši sa desna od prve jedinice na koju naiđemo (nju ne), iza nje znamenke invertiramo (0 postaje 1, 1 postaje 0):

 

111100 postaje 000100 (4), dodamo predznak i imamo -4.

 

 

 

Poruka je uređivana zadnji put čet 17.12.2009 19:55 (Quark).
16 godina
offline
Binarno oduzimanje

ja sam vec i zaboravio binarno oduzimanje...

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice