Professional Documents
Culture Documents
ARCHITEKTURA KOMPUTERÓW
Kolokwium N2
„Arytmetyka liczb typu Float„
Imię pliku:
Imię_Nazwisko_Kol_N2.doc
2023
Prof. Evgeny Ochin
Wstęp
1. Architektura komputera to koncepcyjny opis podstawowej struktury systemu komputerowego, tj. opisujący
działanie procesora, dostęp do danych i adresów do i z pamięci podręcznej, RAM, ROM, dysku twardego
itp.
2. Architekturę komputera to abstrakcyjny obraz budowy i organizacji elementów systemu komputerowego
z punktu widzenia programisty, tj. architektura komputera opisuje atrybuty związane z programowaniem,
które mają bezpośredni wpływ na logiczne wykonanie programu i jego wydajność.
Program zwierający instrukcje dla procesora nosi nazwę kodu maszynowego, który dla człowieka jest bardzo
trudny. Do celu zmniejszyć koszty programo-wania mi-kroprocesorów byli opracowane języki symboliczne,
teraz zwany jako języki asem-blera (ang. Assembly Languages). W językach typu asembler każda instrukcja
ma-szynowa jest reprezentowana za pomocą mnemoniki, który kojarzy się z wykony-waną operacją.
Dodatkowo określone są reguły dla argumentów ope-racji. Np. w komputerze SimpSim zamiast kodu
maszynowego 5712 można pisać addi R7, R1, R2 co znaczy R7:=R1+R2, gdzie Ri, i Є{0, 1, …, 9, A, B, …, F}
— jeden z 16 rejestrów komputera SimpSim.
Procesor nie jest w stanie zrozumieć program, napisany w asemblerze. Dlatego należy dokonać kompilacji,
czyli zamiany tekstu programu, napisanemu w asem-blerze, na odpowiadające mu instrukcje binarne dla
procesora. Operacji tej doko-nuje program zwany kompilatorem. Np. w komputerze SimpSim zamiast tek-stu
addi R7, R1, R2 zapisze w pamięć główną kod maszynowy 5712.
Główne definicje
Liczba — abstrakcyjna istota, wykorzystywana do opisania ilości.
Liczby naturalne
Liczby naturalne wykorzystane są do oznaczenia ilości obiektów policzalnych: jeden, dwa, trzy itd. Liczba «zero», z
zasady, należy do liczb naturalnych.
Operacje dodawania i mnożenia zawsze możliwe są do wykonania w zbiorze liczb naturalnych, w przeciwieństwie do
operacji odejmowania i dzielenia. Odejmowanie (A–B) możliwe jest do wykonania tylko pod warunkiem (A≥B), w
przeciwnym razie wynik odejmowania nie jest elementem zbioru liczb naturalnych. Dla usunięcia niniejszej wady
wprowadzono liczby ujemne. Do formy zapisu liczb dokłada się znaki liczb «unarny plus(+)» lub «unarny minus(–)»,
przy tym znak (+) można pomijać. W przypadku, gdy do liczby dodany jest znak «unarny minus (-)», to mówimy, że
liczba ta jest ujemna. Dopuszcza się także nazwy «plus» lub «minus», jeżeli w kontekście nazwy te nie kojarzą się z
nazwami stosownych operacji arytmetycznych.
Liczby całkowite
Liczby całkowite stanowią sumę zbioru liczb naturalnych (łącznie z zerem) i zbioru liczb ujemnych.
Ułamkowe liczby stałoprzecinkowe
Operacja dzielenia jak w zbiorze liczb naturalnych, tak i w zbiorze liczb całkowitych możliwa jest do wykonania dopiero
wtedy, kiedy jedna liczba dzieli się całkowicie przez inną liczbę. Żeby operacja ta była zawsze możliwa do wykonania,
wprowadza się pojęcie ułamkowej Q–podstawowej liczby, przy tym do formy zapisu liczb dodaje się znak liczby
ułamkowej, nazywany Q–podstawową kropką. Q-podstawowa kropka oddziela całkowitą część liczby od części
ułamkowej. Jeżeli brakuje części ułamkowej liczby, to Q–podstawowa kropka może być opuszczona.
Przykład. Zapisywanie dziesiętnych liczb ułamkowych stałoprzecinkowych.
12.43; 0.0001; 999.00;
Ułamkowe liczby zmiennoprzecinkowe1
Ułamkowa liczba zmiennoprzecinkowa prezentuje się w formie iloczynu dwóch liczb:
D = M QP ,
➢ System liczbowy (SL) – sposób zapisu liczb za pomocą zbioru znaków specjalnych (w tym też liter alfabetu
łacińskiego), zwanych cyframi.
➢ SL nazywa się niepozycyjnym, jeżeli wkład cyfr dla wartości liczby nie zależy od miejsca położenia (numeru
porządkowego) cyfr w zapisywaniu liczby, jak, na przykład, w kanonicznym systemie liczb rzymskich SLR.
➢ SL nazywa się pozycyjnym, jeżeli wkład cyfr dla wartości liczby zależy od miejsca położenia (numeru
porządkowego) cyfr w zapisaniu liczby.
Właściwość pozycyjnego SL
Właściwość pozycyjnego SL, z zasady ma cztery ważne następstwa:
1. wykorzystuje się małą ilość cyfr (do zapisywania Q–podstawowej liczby D są potrzebne log Q (D) cyfry2);
2. można zapisywać liczby, praktycznie nieograniczone co do wielkości;
3. upraszcza się zrozumienie techniki arytmetycznych działań;
4. zmniejsza się czas realizacji operacji arytmetycznych.
Q–podstawowy N-pozycyjny SL liczb naturalnych oznacza się naturalną liczbą Q>1, zwaną podstawą systemu
liczbowego i wierszem Q–podstawowych cyfr
D=d N-1d N-2 d1d 0 , gdzie di {0, 1, …, Q–1}, i=0, 1, …, N–1, zapisanych na zasadzie zmniejszania indeksu i.
Przykład. Dziesiętny 3–pozycyjny SL liczb naturalnych.
Dziesiętny 3–pozycyjny SL (Q=10, N=3) oznacza się wierszem złożonym z czterech dziesiętnych cyfr D=𝑑2 𝑑1 𝑑0 , gdzie
di {0, 1, …, 9}, i=0, 1, 2, w ramach którego można wyznaczyć 103 liczb w przedziale 000≤D≤999.
000
001
10 = 1 000 liczb: 002
3
…
998
{999
Przykład. Dwójkowy 4–pozycyjny SL liczb naturalnych.
Dwójkowy 4–pozycyjny SL (Q=2, N=4) oznacza się wierszem złożonym z dwóch dwójkowych cyfr B=b3 b2 b1b0 , gdzie
bi {0, 1}, i=0, 1, 2, 3, w ramach którego można wyznaczyć 24=16 liczby w przedziale 0000≤B≤1111.
0000
0001
4 0010
2 = 16 liczb:
…
1110
{1111
Porównując powyższe przykłady, można dostrzec, że możliwa jest nieoznaczoność zapisu liczby, jeżeli brakuje jawnego
lub niejawnego wskazania podstawy SL. Na przykład, liczba 1101 może być zapisana zarówno jak w SL2, tak i w SL10.
Liczby całkowite
Liczby całkowite w formacie «znak–moduł»
Całkowite liczby dwójkowe można prezentować tak samo, jak dziesiętne, w formacie «znak–moduł»:
N −1
B = b N −1b N − 2 ...b 0 = bi 2i . W takim przypadku zakres prezentowanych liczb równy jest −(2N − 1) B (2 N − 1) .
i=0
Na przykład, dla N=3 można zapisać
{−7 B 7}10 = {-111,-110,...,-001,-000,+000, +001,...,+111}2
-7 -6 -1 -0 +1 +2 +7
±0
–8 –7 –6 –5 –4 –3 –2 –1 +1 +2 +3 +4 +5 +6 +7
–111
–110
–101
–100
-011
–010
–001
±000
+001
+010
+011
+100
+101
+110
+111
Rys. 2. Przedstawienie zbioru liczb całkowitych w formacie «znak–moduł» na osi liczbowej (N=3)
3
TYPU "UNSIGNED INTEGER" – CAŁKOWITE BEZ ZNAKU
4
SYNONIM – KOD UZUPEŁNIAJĄCY DO 1 (ŻEBY NIE WYJAŚNIAĆ CO TO JEST 1)
5
SYNONIM – KOD UZUPEŁNIAJĄCY DO 2 (ŻEBY NIE WYJAŚNIAĆ CO TO JEST 2)
ARCHITEKTURA KOMPUTERÓW
1 +1 01 001 + 001 0001 0001
0 +0 00 000 + 000 0000 0000
— –0 00 — – 000 1000 0000
— –1 99 — – 001 1001 1111
— –2 98 — – 010 1010 1110
— –3 97 — – 011 1011 1101
— –4 96 — – 100 1100 1100
— –5 95 — – 101 1101 1011
— –6 94 — – 110 1110 1010
— –7 93 — – 111 1111 1001
— –8 92 — — — 1000
— –9 91 — — — —
— – 10 90 — — — —
Tablica 1. Prezentacja liczb dziesiętnych i dwójkowych w różnych kodowaniach (całkowite dwójkowe liczby faktycznie
są (N+1) – pozycyjnymi, ponieważ w pamięci komputera znak liczby oraz cyfry liczby zajmują po jednej komórce
pamięci o pojemności 1 bit).
1110
1101
1100
1011
1010
1001
0000
1000
0001
0010
0011
0100
0101
0110
0111
Rys. 3. Przedstawienie zbioru liczb całkowitych kodzie prostym na osi liczbowej (N=3)
Czas wykonywania operacji dodawania można zmniejszyć (zob. rozdział «Arytmetyka»), jeśli liczby zapisane byłyby w
kodzie odwrotnym lub uzupełniającym.
Jeżeli rząd znaku rozpatrywać jako najstarszą cyfrę liczby o wadze (–2N), to dostaniemy SL2 w kodzie uzupełniającym:
N −1
Buzp = zb N −1b N − 2 ...b1b 0 = −z 2 N + bi 2i
i =0
N +1
Strona 5|9
Prof. Evgeny Ochin
SL2 w kodzie uzupełniającym jest
podstawowym SL techniki obliczeniowej
+0
–8 –7 –6 –5 –4 –3 –2 –1 +1 +2 +3 +4 +5 +6 +7
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
Rys. 4. Przedstawienie zbioru liczb całkowitych
w kodzie uzupełniającym na osi liczbowej (N=3)
Liczby zmiennoprzecinkowe
B = z p2 p1 p0 m-1 m-2 m-3 m-4 = ±0. 𝑚−1 𝑚−2 𝑚−3 𝑚−4 ∗ 2𝑝2 𝑝1 𝑝0 ,
Mnóstwo przedstawianych liczb B typu Float w formacie jeden bajt można zapisać następującym obrazem:
Z=0 P=
M 000 001 010 011 100 101 110 111
0000 0 0 0 0 0 0 0 0
0001 1/16 1/8 1/4 1/2 1 2 4 8
0010 2/16 2/8 2/4 2/2 2 4 8 16
0011 3/16 3/8 3/4 3/2 3 6 12 24
0100 4/16 4/8 4/4 4/2 4 8 16 32
0101 5/16 5/8 5/4 5/2 5 10 20 40
0110 6/16 6/8 6/4 6/2 6 12 24 48
0111 7/16 7/8 7/4 7/2 7 14 28 56
1000 8/16 8/8 8/4 8/2 8 16 32 64
1001 9/16 9/8 9/4 9/2 9 18 36 72
1010 10/16 10/8 10/4 10/2 10 20 40 80
1011 11/16 11/8 11/4 11/2 11 22 44 88
1100 12/16 12/8 12/4 12/2 12 24 48 96
1101 13/16 13/8 13/4 13/2 13 26 52 104
1110 14/16 14/8 14/4 14/2 14 28 56 112
1111 15/16 15/8 15/4 15/2 15 30 60 120
ARCHITEKTURA KOMPUTERÓW
Z=1 P=
M= 000 001 010 011 100 101 110 111
0000 0 0 0 0 0 0 0 0
0001 -1/16 -1/8 -1/4 -1/2 -1 -2 -4 -8
0010 -2/16 -2/8 -2/4 -2/2 -2 -4 -8 -16
0011 -3/16 -3/8 -3/4 -3/2 -3 -6 -12 -24
0100 -4/16 -4/8 -4/4 -4/2 -4 -8 -16 -32
0101 -5/16 -5/8 -5/4 -5/2 -5 -10 -20 -40
0110 -6/16 -6/8 -6/4 -6/2 -6 -12 -24 -48
0111 -7/16 -7/8 -7/4 -7/2 -7 -14 -28 -56
1000 -8/16 -8/8 -8/4 -8/2 -8 -16 -32 -64
1001 -9/16 -9/8 -9/4 -9/2 -9 -18 -36 -72
1010 -10/16 -10/8 -10/4 -10/2 -10 -20 -40 -80
1011 -11/16 -11/8 -11/4 -11/2 -11 -22 -44 -88
1100 -12/16 -12/8 -12/4 -12/2 -12 -24 -48 -96
1101 -13/16 -13/8 -13/4 -13/2 -13 -26 -52 104
1110 -14/16 -14/8 -14/4 -14/2 -14 -28 -56 -112
1111 -15/16 -15/8 -15/4 -15/2 -15 -30 -60 -120
Tak, na przykład,
Bmax=01111111= 27 ·15/16=120 -Bmax=11111111= -27 · 15/16=-120
Bmin=00000001= 20 ·1/16=1/16 -Bmin=10000001= -20 ·1/16=-1/16
6
SPEŁNIA SIĘ JAKO DODAWANIE, DO TEGO DRUGI OPERAND ODWRACA ZNAK
Strona 7|9
Prof. Evgeny Ochin
• Wykonać operację B=B’+B’’ za pomocy symulatora SimpSim7 i dodać do sprawozdania dump (treści)
pamięci mikroprocesora SimpSim po wykonaniu operacji B=B’+B”.
B=7D=01111101=13/16*27=104
Podsumowanie: wynik jest taki sam.
• Wykonać operację odejmowania B=B’-B’’ jako operację dodawania B=B’+(-B’’), gdzie (-) jest
operacją zmiany znaku liczby. Wykonać ręcznie.
7
HTTP://WWW.ANNE-GERT.NL/PROJECTS/SIMPSIM/ TA ELEMENT ZADANIA JEST WYKONYWANA DLA STUDENTÓW STUDIÓW
STACJONARNYCH DLA OCENY 5+
8
HTTP://WWW.ANNE-GERT.NL/PROJECTS/SIMPSIM/ TA ELEMENT ZADANIA JEST WYKONYWANA DLA STUDENTÓW STUDIÓW
STACJONARNYCH DLA OCENY 5+
ARCHITEKTURA KOMPUTERÓW
Strona 9|9