Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odejmowanie binarme
Forum PHP.pl > Inne > Hydepark
invx
pomuzcie ohmy.gif , prubuje zrozumiec odejmowanie binarne, i nie moge: wszedzie pisze "odejmuje sie tak samo jak dodaje tylko zamiast nadwyzki mamy pozyczke", i jak tak na takim przykladzie zaczynam "pozyczac" to mi cuda wychodza,

110100010 - 10011111

moze znacie cos gdzie takie rozbudowaane przyklady sa opisane szczegulowo ? bo sie hyba zalamie sad.gif
hwao
w win
start -> uruchom -> akcesoria -> Kalkulator

(u gory)
Widok -> naukowy
Potem
Widok -> Dwójkowy

i masz popatrz sobie jak tam jest i na tej podstanie napisz ;-)
Seth
Zasada odejmowania binarnego jest taka:
A - B = A + U1(B)
Gdzie A i B to liczby binarne, a U1 (1 w dolnym indexie) to uzupełnienie jedynkowe (przesunięcie binarne).

Przyklad:
A = 15 (dec) = 01111 (bin)
B = 19 (dec) = 10011 (bin)

U1(B) = 01100

I teraz mamy:
Kod
   11
   01111   <----- A
+ 01100   <----- U1(B)
-------
   11011
Ace
Dzieki Seth, mi tez pomogles. A tak btw... znacie jakies strony gdzie to jest bardzo jasno wytlumaczone ? bo mam na studiach wlasnie wstep do informatyki - zaoczne - wiec nie wiele tlumacza... Nie wiem skad sie co bierze, a teraz przynajmniej swiatelko w tunelu zaswiecilo. Zamiana hex na binarne, kodowania UTF8, ISO-8859 winksmiley.jpg
hwao
Nie wiem czy sie przyda ale tu masz troche o zamienia :-)
click
invx
Seth czyli ten drugi skladnik dzialania, odwracamy (gdzie 1 to 0 gdzie 0 to 1) i dodajemy ? i tak zawsze niezaleznia jakie mamy liczby i jak dlugie ? a gdzie sie daje to uzupelnienie jedynkowe ?, cos mi sie obilo o uszu ze to dodaje na 0 bicie ? jak bys mogl to pokazac na przykladzie tym moim:
Kod
110100010 - 10011111


P.S.
prubuje i mi cos nie wychodzi dalej
hwao
Kod
110100010 - 10011111 = 100000011

Czyli
Kod
418 - 159 = 259

Wes sobie na mniejszych liczbach pocwicz a nie odrazu...
Kod
100 (4) - 11 (3) =  1 (1)
invx
o to chodzi ze na mniejszych to potrafie, ale jak przyjdzie ze sa kolo siebie z 3 zera, to juz nie potrafie ohmy.gif, niech mi ktos wyjasni ten przyklad dlugi ...
Seth
U1 - to tzw. dopelnienie binarne i tak jak pisales wczesniej, zmieniamy 0 na 1 ,a 1 na 0 smile.gif

Dodam jeszcze, ze w przypadku gdy uzyskamy "nadmiarowa" jedynke, ktora potem musimy dodac do najmniej znaczacego bitu (na poczatek), to oznacza to, ze mamy wynik dodatni.

Podam Ci jeszce jeden przyklad aby bylo jasne o co chodzi:

115 - 99 = 16(dec)

115 = 01110011(bin)
99 = 01100011(bin)

U1(99) - zmieniamy 0 na 1 i 1 na 0 reprentacje binarna 99
Czyli mamy: 10011100

Teraz dodajemy:
Kod
|1111 <--- "nadmiar"
| 01110011 <--- 115(dec)
|+10011100 <--- U1(99)
|-----------
| 00001111
<Przenosimy teraz nadmiarowa jedynke (ta ktora juz nie mozemy dodac do lidzby binarnej [musi byc 8 bitow] - gdyby byla to liczba dziesietna to dali bysmy ja na poczatek)>
+        1
-----------
00010000

Teraz chyba bedzie wszystko jasne winksmiley.jpg
Ace
hehe, nie winksmiley.jpg ale ok, jakos poszukam materialow na necie ...

Dzieki za staranie, chodz i tak temat nie byl moj, to i tak ja skorzystalme troszke z niego
invx
sad.gif

Kod
10100001
-1110111
-------------

i teraz liczbe 1110111 odwracam i otrzymuje 0001000, dodaje je

10100001
+0001000
--------------
10101001

i sprawdzam i powinno wyjsc 101010

gdzie popelniam blad ? cos piszesz o jakiejs nadwyzce ...
hwao
sorka invx ale ja juz to zrozumialem z opisow Seth'a chociarz mi siepcjalnie nie zalezalo :-) ( bylo super wytlumaczone ).
To torche przypomina to co sie robi przy dodawaniu pod kreska i masz wiecej niz 9
Seth
1110111 musi miec 8 bitow, nie 7
Powinno, wiec byc: 01110111 (119 w dec)

Teraz to odwracasz: 10001000 i dodajesz do 10100001

Nadwyzka jest wtedy kiedy dojdziesz do pierwszych cyfr tych dwoch liczb binarnych czyli bedzie
1
+ 1
----
to zapisujesz 0 a 1 (1 + 1 = 0 + nadwyzka 1) dodajesz na poczatek.
invx
ok, rozumie Seth'a, tylko caly czas problem w tym ze jak sprawdzam to dzialanie na kalkulatorze (tym w windows) to inaczej pokazuje:
wg. Seth'a wychodzi: 100101001
wg. kalk. wychodzi: 101010
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.