[Systemy liczbowe] Odejmowanie binarne

kaprix
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 16 lut 2018, o 18:07
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Systemy liczbowe] Odejmowanie binarne

Post autor: kaprix »

Mam problem z odejmowaniem binarnym. Chcę odjąć liczby -21 oraz 22.
Najpierw zamienię liczby 21 oraz 22 na ujemne, by móc wykonać operację dodawania na nich:
\(\displaystyle{ 21: [0]10101

-21: [1]01011

22: [0]10110

-22: [1]01010}\)


(w nawiasach kwadratowych są bity znaku)

Jednak w tym przypadku wynik nie zmieści się na 5 bitach. Ignorując przeniesienie przed bitem znaku otrzymuję:
\(\displaystyle{ [0]10101}\)

Wynik jest niepoprawne. Bit znaku nie jest ujenmy, więc wynik jest zły. Jak to rozwiązać?
Ostatnio zmieniony 17 lut 2018, o 23:25 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Awatar użytkownika
leg14
Użytkownik
Użytkownik
Posty: 3132
Rejestracja: 5 lis 2014, o 20:24
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 154 razy
Pomógł: 475 razy

[Systemy liczbowe] Odejmowanie binarne

Post autor: leg14 »

W jakim sensie mówisz, że jest niepoprawny? Wynik się nie mieści, to nie otrzymasz dobrego wyniku.
Wynik jest zły, bo jeśli zostaje Ci jedynka, to powinieneś ją dodać do całego wyniku, poczytaj sobie tu
... acja_liczb
kaprix
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 16 lut 2018, o 18:07
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Systemy liczbowe] Odejmowanie binarne

Post autor: kaprix »

To dlaczego w tym przypadku odrzucamy nadmiarową jedynkę?
Awatar użytkownika
leg14
Użytkownik
Użytkownik
Posty: 3132
Rejestracja: 5 lis 2014, o 20:24
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 154 razy
Pomógł: 475 razy

[Systemy liczbowe] Odejmowanie binarne

Post autor: leg14 »

A sorry, popatrzyłem tylko na zapisane -22 i założyłem, że korzystasz z systemu znak moduł odwrotny.
Wynik nie jest zły, bo -43 nie da się przedstawić w tym systemie - najmniejszą liczbą jest -32. W tym systemie dodanie jedynk ido największej liczby dodatniej daje ci najmniejszą liczbę, czyli 32. Tak samo odejmując jedynkę od -32 dostaniesz największą liczbę dodatnią, czyli 31.
No to załóżmy, że wykonujesz dodawanie \(\displaystyle{ -22 + -21}\). Idziemy jednorazowo dodając tylko jedną -1 do -22, otrzymujemy:
-23
-24
...
-32
gdy osiągamy -32 zostaje nam do odjęcia -11, gdy odejmiemy następną jedynkę przeskoczymy do
31 zostanie nam do odjęcia -10
31 -10 = 21 i taki wynik otrzymałeś
kaprix
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 16 lut 2018, o 18:07
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Systemy liczbowe] Odejmowanie binarne

Post autor: kaprix »

Ale wykonując \(\displaystyle{ -9-4}\) otrzymujemy nadmiarową jedynkę, którą ignorujemy.
Wykonując \(\displaystyle{ -21-22}\) otrzymujemy nadmiarową jedynkę, której nie ignorujemy.

Domyślam się, że w pierwszym przypadku igornujemy, poniewać wynik zmieści się na bitach najdłuzszej liczby. W drugim przypadku się nie mieści.

Ale skąd komputer wie czy się zmieści czy nie? Ona ma tylko bity i w obu przypadkach wystepuje carry na bicie znaku.
Awatar użytkownika
leg14
Użytkownik
Użytkownik
Posty: 3132
Rejestracja: 5 lis 2014, o 20:24
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 154 razy
Pomógł: 475 razy

[Systemy liczbowe] Odejmowanie binarne

Post autor: leg14 »

W drugim wypadku też ignorujemy.
Moja uwaga:
Wynik jest zły, bo jeśli zostaje Ci jedynka, to powinieneś ją dodać do całego wyniku, poczytaj sobie tu
wynikała z tego, że myślałem, że mówisz o innym sposobie za[isywania ujemnych liczb
kaprix
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 16 lut 2018, o 18:07
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Systemy liczbowe] Odejmowanie binarne

Post autor: kaprix »

To w końcu jak powinno być rozwiązane te odejmowanie? Napisałeś, że wynik nie jest zły, ale jednak -43 nie mieści się na tylu bitach, więc jest zły.
Awatar użytkownika
leg14
Użytkownik
Użytkownik
Posty: 3132
Rejestracja: 5 lis 2014, o 20:24
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 154 razy
Pomógł: 475 razy

[Systemy liczbowe] Odejmowanie binarne

Post autor: leg14 »

Odróżniaj odejmowanie w systemie U2 z 6 bitami od odejmowania liczb naturalnych.
Twój wynik odejmowania -22 -21 w sytsemie uzupełnieniowym (U2) jest poprawny, przecież nie jesteś w stanie reprezentować -43 w tym systemie, dlatego dostajesz coś innego! Wytłumaczyłem Ci zresztą dlaczego jest to akurat 21
ODPOWIEDZ