UTK, Zapisywanie liczb całkowitych w różnych systemach liczbowyc1, Zapisywanie liczb całkowitych w różnych systemach liczbowych


Zapisywanie liczb całkowitych w różnych systemach liczbowych

Zamiana z systemu dziesiętnego na dowolny

Aby zamienić liczbę o podstawie 10 na dowolną o innej podstawie, należy dzielić ją przez docelową podstawę i zapisywać kolejne reszty z dzielenia. Dzielenia się dokonuje na kolejnych całkowitych wynikach poprzednich dzieleń, aż się dojdzie do wartości 0.

Przykład - zapisać liczbę 100 w systemie o podstawie 6:

100:6=16

reszta 4

16:6=2

reszta 4

2:6=0

reszta 2

Poszczególne cyfry systemu o podstawie 6 otrzymujemy w kolejności od najmniej znaczącej do najbardziej znaczącej. Tutaj 100(10) = 244(6).

Zamiana z systemu dowolnego na dziesiętny

Aby obliczyć dziesiętną wartość liczby o podstawie n, należy obliczyć i zsumować wartości dziesiętne poszczególnych cyfr danej liczby. Wartość cyfry w liczbie o podstawie n jest równa cyfra*npoz, gdzie poz to pozycja cyfry w liczbie liczona od prawej strony od zera.

Przykład - zapisać liczbę 251(7) w postaci dziesiętnej:

251(7) = 2*72+5*71+1*70=2*49+5*7+1*1=98+35+1=134(10)

Zamiana z systemu dziesiętnego na dwójkowy

Jest to szczególny przypadek metody opisanej powyżej, gdzie podstawą jest liczba 2. Dana liczba jest więc dzielona cyklicznie przez 2, a reszty z dzielenia tworzą końcowy wynik.

Przykład - zapisać liczbę 154(10) w systemie binarnym:

154:2=77

reszta 0

77:2=38

reszta 1

38:2=19

reszta 0

19:2=9

reszta 1

9:2=4

reszta 1

4:2=2

reszta 0

2:2=1

reszta 0

1:2=0

reszta 1

Poszczególne cyfry systemu binarnego otrzymujemy w kolejności od najmniej znaczącej do najbardziej znaczącej. Tutaj 153(10) = 10011010(2).

Zamiana z systemu dwójkowego na dziesiętny

Analogicznie do metody opisanej powyżej, liczbę dziesiętną otrzymuje się poprzez zsumowanie iloczynów kolejnych cyfr i potęg dwójki, gdzie wykładnikiem potęgi jest nr pozycji cyfry liczony od 0.

Przykład - zapisać liczbę 11010100(2) w postaci dziesiętnej:

11010100(2) = 1*27 + 1*26 + 0*25 + 1*24 + 0*23 + 1*22 + 0*21 + 0*20 = 1*128 + 1*64 + 0*32 + 1*16 + 0*8 + 1*4 + 0*2 + 0*1 = 128 + 64 + 16 + 4 = 212(10)

Zamiana z systemu dwójkowego na szesnastkowy

W przypadku konieczności używania dużych liczb binarnych pojawia się problem łatwego wprowadzenia błędu przez programistę w kodzie źródłowym (spróbujcie wpisać kilka liczb 32-bitowych nie myląc się w tych zerach i jedynkach to szybko zrozumiecie dlaczego tak jest). Dlatego też programiści chętniej używają systemu szesnastkowego do zapisu takich liczb. Ponieważ 4-bitowej liczbie odpowiada jedna cyfra szesnastkowa, zapis liczby w programie zmniejsza się czterokrotnie. A dlaczego nie używa się systemu dziesiętnego? Dlatego, że konwersja z liczby binarnej na szesnastkową jest banalnie prosta. Wystarczy podzielić liczbę na paczki po 4 bity (w razie potrzeby dodać do niej zera na początku jak brakuje do pełnej czwórki bitów) i następnie każdą paczkę bitów zastąpić odpowiadającą jej cyfrą szesnastkową.

Przykład - zamienić liczbę 111101101011110(2) na postać szesnastkową:

Najpierw liczbę dzielimy na paczki po 4 bity, w razie czego na początku dopisujemy zera, żeby można było utworzyć pełne paczki: 0111-1011-0101-1110.

Następnie każdą paczkę zastępujemy odpowiadającą jej cyfrą szesnastkową i otrzymujemy 7-B-5-E. Wynikiem jest więc liczba 7B5E(16).

Zamiana z systemu szesnastkowego na dwójkowy

Tutaj kolejność postępowania jest dokładnie odwrotna niż poprzednio. Aby zamienić liczbę szesnastkową na postać binarną, należy każdą jej cyfrę zastąpić binarnym 4-bitowym odpowiednikiem.

Przykład - zamienić liczbę E4A(16) na postać binarną:

Każdą cyfrę zastępujemy czterema bitami odpowiadającej jej postaci dwójkowej: 1110-0100-1010. Wynikiem jest więc liczba 111001001010(2).

Zapis liczb ujemnych całkowitych w systemie binarnym

Dotychczas przy zapisywaniu liczb binarnych przyjmowano założenie, że są to liczby całkowite nieujemne. Kod binarny takiej liczby określany jest mianem Naturalnego Kodu Binarnego (NKB). Jednak przy pisaniu programów często zachodzi konieczność korzystania z liczb ujemnych. W przypadku systemu dziesiętnego liczbę ujemną oznacza się poprzez dodanie na początku znaku minus. Dla systemu binarnego taka sytuacja jest niemożliwa, gdyż wszelkie dane są zapisane z użyciem kombinacji zer i jedynek. Dlatego też sam zapis liczby ujemnej musi być tak zrobiony, by były użyte jedynie wartości odpowiednich bitów.

W przypadku komputerów do zapisu liczb w systemie dwójkowym używa się powszechnie kodu uzupełnień do dwóch (U2). Kod ten tym się różni od NKB, że wartość najbardziej znaczącego bitu jest ujemna.

Jeżeli najbardziej znaczący bit jest równy 1 to liczba w kodzie U2 jest ujemna, w przeciwnym wypadku jest równa zero lub dodatnia. Tą regułę warto zapamiętać, gdyż pozwala ona na "pierwszy rzut oka" stwierdzić, czy liczba binarna w kodzie U2 jest dodatnia czy też ujemna.

Jak wygląda wartość liczby 4 bitowej w kodzie NKB i U2, prezentuje poniższa tabelka:

wartość dziesiętna
przy założeniu,
że liczba jest w kodzie NKB

zapis binarny

wartość dziesiętna
przy założeniu,
że liczba jest w kodzie U2

0

0000

0

1

0001

1

2

0010

2

3

0011

3

4

0100

4

5

0101

5

6

0110

6

7

0111

7

8

1000

-8

9

1001

-7

10

1010

-6

11

1011

-5

12

1100

-4

13

1101

-3

14

1110

-2

15

1111

-1

Skąd procesor ma wiedzieć, czy dana paczka bitów jest w kodzie NKB czy też U2? Nie musi wiedzieć. Użycie odpowiedniego kodu jest uwzględniane na etapie budowy pliku wykonywalnego (kompilacji kodu źródłowego i łączenia modułów) gdzie informacja o rodzaju kodu jest zawarta w kodzie źródłowym poprzez odpowiednie użycie typów danych przez programistę. Np. w środowisku programowania Delphi "integer" to liczba 32 bitowa w kodzie U2, a "cardinal" to liczba 32 bitowa w kodzie NKB. W zależności od tego jakiego rodzaju typu danych programista użyje, będą wykonywane odpowiednio obliczenia w kodzie U2 lub NKB.

Zamiana liczby dodatniej na ujemną i odwrotnie

Zamiana taka odbywa się wg ściśle określonej dwuetapowej metody. Najpierw w liczbie negowane są wszystkie cyfry, następnie do wyniku negacji dodaje się liczbę 1 (dodawanie w systemie dwójkowym odbywa się na tych samych zasadach co w systemie dziesiętnym). Otrzymany wynik to liczba z przeciwnym znakiem niż liczba startowa.

Przykład. Zamienić liczbę 01110100(U2) na ujemną

Najpierw negujemy wszystkie bity w liczbie, czyli jedynki zastępujemy zerami, a zera jedynkami. Otrzymujemy wtedy: 10001011.

Następnie do wyniku dodajemy liczbę 1 czyli tutaj 00000001.

10001011

+ 00000001

----------

10001100

Wynikiem jest liczba 10001100(U2), czyli 10001100(U2) = - 01110100(U2).

Przejście z liczby ujemnej do dodatniej następuje wg tego samego algorytmu, czyli najpierw negacja bitów a później dodanie do wyniku liczby 1.



Wyszukiwarka

Podobne podstrony:
egzamin utk skrypt gz v3, Architektura Systemów Komputerowych
kart system zapisywania liczb
[090601] Ma gorzata Ogrodnik - Systemy zapisywania liczb, matematyka 4kl
rzymski system zapisywania liczb
Test rzymski system zapisywania liczb
Systemy zapisywania liczb sprawdzian
Zapisywanie liczb cyframi rzymskimi to nie problem, Dokumenty(1)
UTK, System liczb dwójkowy (binarny) a Kod ASCII, Znaki ASCII 0 - 255 00000000 - 11111111
zapisywanie liczb
Różne sposoby zapisywania liczb, edukacja matematyczna
zapisywanie i odczytywanie liczb, MATEMATYKA klasa 4
Konspekt; różne sposoby zapisywania liczb, Metodyka, Matematyka-konspekty
sciagi, BADANIA marketingowe, funkcje, BADANIA marketingowe- zespół działań technik oraz zasad syste
Zapisywanie liczb cyframi rzymskimi to nie problem, Dokumenty(1)
utk 006b systemy liczbowe
Gdzie zapisywane są zrzuty pamięci po awarii systemu Windows oraz jak sztucznie wywołać Bluescreen
utk 006 systemy liczbowe przyklad
utk 006 systemy liczbowe przyklad
10 Reprezentacja liczb w systemie komputerowymid 11082 ppt

więcej podobnych podstron