Wątek przeniesiony 2020-03-11 19:34 z Edukacja przez cerrato.

Kod uzupełnień do 2, prośba o wyjaśnienie nieścisłości - niezgodność wyników

0

Siema, zastanawiam się nad pewną rzeczą.
Uczę się właśnie z kursu na courserze, odnośnie budowy komputera od podstaw, jestem na etapie "budowania" ALU.

Na wejściu ALU mamy dwie szyny 16 bitowe, w zależności od różnych bitów wykonywane są różne operacje, jedną z nich jest negacja - wejścia A lub wejścia B - zerowanie bitów, a także sumowanie tych dwóch liczb.

Problem jest następujący, do ALU wchodzą dwie liczby A: 16 zer i B: 16 jedynek.
Na obu tych liczbach ma zostać wykonana najpierw operacja zamiany wszystkich bitów na zera, później zanegowania tych wyników, następnie operacja dodawania i na koniec negacja wyniku dodawania.

Zadziałajmy na wejściu A:

Najpierw zerujemy bity, co nie zmieni nam naszej liczby, później, z kodu uzupełnień do 2 mając na wejściu A 16 zer, ich negacja będzie wyglądać następująco, zmieniamy wszystkie bity na przeciwne i dodajemy 1, bit przeniesienia "utniemy", więc zostanie na powrót 16 zer.

Teraz wejście B:

Najpierw je zerujemy, mamy 16 zer, a później te 16 zer negujemy i dodajemy 1, więc tak jak w przypadku A, mamy na powrót 16 zer.

Teraz dodajemy do siebie te dwie liczby, 16 zer i 16 zer da nam w wyniku 16 zer, na koniec wynik negujemy, więc mamy 16 jedynek, dodajemy 1 i mamy na powrót 16 zer.

Tylko, że prawidłowy wynik według tabeli autorów kursu to 1, a nie 0.
Mógłby mi ktoś wytłumaczyć o co chodzi, byłbym bardzo wdzięczny :)

2

Negowanie bitów w to nie zmiana znaku liczby. Ty zastosowałeś zmianę znaku liczby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1