Pozycyjne systemy liczbowe
system addytywny – zapisaną liczbę odczytuje się jako sumę wartości jej poszczególnych cyfr np rzymski system liczbowy
np jeśli “X”=10,”V”=5,”I”=1 to XVI = 10+5+1 = 16
system pozycyjny – o wartości liczb decyduje jej miejsce w zapisie liczby
np:
Podstawą systemu dziesiętnego jest liczba 10, będąca jednostką drugiego rzędu. Trzeciego rzędu 100 itd. Jednostką pierwszego rzędu jest 1.
———————————————————————————————————————————-
WYTŁUMACZENIA !
———————————————————————————————————————————-
1 bit może przyjmować wartości tylko 0 albo 1 (fałsz – prawda). Za pomocą bitu można przekazać dwie różne informacje przypisując je odpowiednio stanowi 0 i 1
co w sytuacji kiedy chcemy zapisać liczby większe od 1 ? w końcu jeden bit to za mało.
musimy użyć kolejny bit.
Dwa bity dają nam już 4 rożne symbole/kombinacje 00, 01, 10, 11 !
Trzy bity dają nam już 8 rożnych symboli/kombinacji 000, 001, 010, 011, 100, 101, 110, 111 !
Ile symboli/kombinacji dają nam 4 bity ?
zapisując liczby na:
– jednym bicie możemy zapisać liczby 0-1
– dwóch bitach możemy zapisać liczby 0-3
– trzech bitach możemy zapisać liczby 0-7
– czterech bitach możemy zapisać liczby 0-15
…..
– na 8 bitach (1Bajt) możemy zapisać liczby od 0-255
co zrobić aby móc zapisać większą liczbę ? trzeba skorzystać z następnego Bajtu itd
przykłady zakresów – typy zmiennych:
int zmienne całkowite mogą przechowywać liczby całkowite.
32 bitowe liczby całkowite
Zakres: -231…231 – 1, -2147483648…2147483647.
Każda zmienna int zajmuje w pamięci komputera 4 bajty.
short int zmienne całkowite mogą przechowywać liczby całkowite.
16 bitowe liczby całkowite
Zakres: -215…215 – 1, -32768…32767.
Każda zmienna short int zajmuje w pamięci komputera 2 bajty
char
8 bitowe liczby całkowite
Zakres: -27…27 – 1, -128…127.
Każda zmienna char zajmuje w pamięci komputera 1 bajt. Typ ten jest interpretowany przez operacje wejścia wyjścia jako typ znakowy – jedna zmienna char może przechować jeden znak ASCII. Poza tym zmienne char możemy traktować jak zwykłe zmienne całkowite.
Przy obliczeniach wynik może przekroczyć dozwolony zakres wartości dla danego typu całkowitego, co prowadzi do błędów. Uruchom program.
bool 1 bitowa dana logiczna.
Każda zmienna bool zajmuje w pamięci komputera 1 bajt. Wartość zmiennej jest przechowywana w najmłodszym bicie. Pozostałe 7 bitów jest niewykorzystywane.
00000000 – fałsz
00000001 – prawda
Wartość wyrażenia jest obliczana, a następnie dokonana zostaje konwersja tej wartości zgodnie z typem zmiennej. Dla zmiennych bool wartość wyrażenia różna od 0 oznacza prawdę – zostanie ustawiony ostatni bit zmiennej i w efekcie otrzymamy wartość 1: Zobacz program
Rozmiar zwraca funkcja sizeof(), do której możemy przekazać zmienną lub typ. Wynikiem jest liczba bajtów pamięci, w której zostanie zapisany obiekt danego typu. Uruchom program
System dwójkowy (binarny)
komputer posługuje się systemem binarnym, czyli dwójkowym. W systemie tym mamy do dyspozycji dwie cyfry 0 i 1.
Np. liczba zapisana w dziesiętnym systemie liczbowym jako 10, w systemie dwójkowym przybiera postać 1010, gdyż:
———————————————————————————————-
8 bitów = 1 Bajt (krótkie słowo)
16 bitów = 2 Bajty (słowo)
32 bity = 4 Bajty (długie słowo = podwójne słowo)
64 bity = 8 Bajtów (poczwórne słowo)
MSB = Most Significant Bit = najbardziej znaczący bit
LSB = Least Significant Bit = najmniej znaczący bit
Wyznaczanie rozwinięcia dwójkowego liczby dziesiętnej – istotna jest reszta z dzielenia !
http://www.edu.godula.com
Teraz wystarczy przepisać uzyskane reszty z dzieleń od dołu do góry: 10101101
System szesnastkowy
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
wartość dziesiętna |
cyfra szesnastkowa |
wartość dwójkowa |
0 | 0 | 0000 |
1 | 1 | 0001 |
2 | 2 | 0010 |
3 | 3 | 0011 |
4 | 4 | 0100 |
5 | 5 | 0101 |
6 | 6 | 0110 |
7 | 7 | 0111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
Aby przeliczyć liczbę z systemu szesnastkowego na dziesiętny
musimy skorzystać z poniższego wzoru:
Załóżmy, że chcemy przeliczyć z systemu szesnastkowego na dziesiętny liczbę: 9a0b(16)
Przeliczać z szesnastkowego na dziesietny może na 2 sposoby:
– pierwsza – przedstawiona powyżej – wymaga “większych” obliczeń ale jest w miarę krótka
– druga – przełożyć liczbę z systemu szesnastkowego na dwójkowy i z tej postaci przeliczać na dziesiętny – ma łatwiejsze obliczenia ale za to ma więcej “rozpisywania”
Aby przeliczyć liczbę z systemu dziesiętnego na szesnastkowy
przydadzą nam się wcześniej wypisane potęgi liczby 16 czyli: 1, 16, 256, 4096, 65536
39435 (10)
Teraz pozostało tylko zapisać poszczególne liczby (wyniki) w odpowiedniej kolejności: 9,10,0,11 i zamienić liczby dziesiętne na ich szesnastkowe odpowiedniki: 9a0b