Зертханалық жұмыс №1 (2 сағат)
Тақырыбы: Ақпаратты кодтау. Екілік кодтау.
Ақпаратты бір формадан басқа формаға ауыстыру барысында кодтау болады. Кодтау құралы деп белгілер мен таңбалардан тұратын кестелерді айтамыз. Олардың арасында бір сәйкестік болуы керек. Келесі кестеде графикалық объектілер арасында байланыс орнатылған.
Екілік код
|
Ондық код
|
КОИ8
|
СР1251
|
СР866
|
Мас
|
ISO
|
00000000
|
0
|
|
………….
|
|
|
00001000
|
8
|
Соңғы символды жою (BacSpase пернесі)
|
………….
|
|
|
00001101
|
13
|
Жолды ауыстыру ( ENTERпернесі)
|
………….
|
|
|
00100000
|
32
|
Бос орын
|
00100001
|
33
|
!
|
………….
|
|
|
01011010
|
90
|
Z
|
…………..
|
|
|
01111111
|
127
|
|
10000000
|
128
|
-
|
Ъ
|
А
|
А
|
К
|
…………..
|
|
|
|
|
|
|
11000010
|
194
|
б
|
В
|
-
|
-
|
Т
|
………….
|
|
|
|
|
|
|
11001100
|
204
|
л
|
М
|
|
|
|
|
Ь
|
………….
|
|
|
|
|
|
|
11011101
|
221
|
щ
|
Э
|
_
|
Е
|
н
|
…………
|
|
|
|
|
|
|
11111111
|
255
|
ь
|
Я
|
Бос орын
|
Бос орын
|
п
|
Ақпаратпен алмасу кезінде кодтау мен қатар декодтау процестері де жүргізіледі. Компьютерге алфавит таңбасын енгізген кезде сәйкес перненін басқанда оның компьютер кодына ауысуы жүзеге асырылады. Ал монитор экранына шыққан кезде қайтадан декодтау процесі жүзеге асырылады.
Кодтау – бір таңбалар жүйесіндегі таңбалар немесе таңбалар тобының басқа таңбалар жүйесінің таңбалары немесе таңбалар тобына ауысу операциясы.
Мысал ретінде тауардың штрих кодын қарастырайық. Мұндай кодтар әрбір тауарда болады. Адам үшін сандық кодтау қолайлы, ал автоматтандырылған есеп үшін штрих кодтау қолайлы болып табылады.
Екілік кодтау
Компьютерде мәтіндік, графиктік, сандық аақпаратты өңдеуге болады. Сұрақ пайда болады: «Компьютер адам үшін әр түрлі түрдегі ақпаратты қалай қабылдап, қалай тез өңдейді?»
Осы аталған барлық ақпараттың түрлері электрлік импульстар тізбегімен кодталады: импульс бар (1), импульс жоқ (0), т.с.с. Ақпаратты компьютерде кодтаудың осындай тәсілі екілік кодтау деп аталады. Ал бір мен нольдердің тізбегі машиналық тіл деп аталады.
Ақпарат түрі
|
Екілік код
|
Сандық
|
|
Мәтіндік
|
Графиктік
|
Дыбыстық
|
Видео
|
Сурет 1. Ақпаратты екілік кодтау
Ақпарат компьютерде екілік код түрінде көрінеді, оның алфавиті екі цифрдан тұрады: 0 және 1.
Бұл екі санды тең ықтималдықты оқиғалар немесе жағдай деп қарастыруға болады. Ақпаратты өлшеу бірлігінің өзі ағылшынның Binary Digit сөзінен шыққан. Ол сөз аударғанда екілік разряд деп аталады.
Машиналық екілік кодтың әрбір цифры 1 битке тең ақпарат тасиды.
Сұрақтар:
Ақпаратты кодтау дегеніміз не?
Компьютер неге екілік кодтауды, ал адамдар неге ондық кодтауды қолданады?
Екілік кодтаудың қандай артықшылықтары бар деп ойлайсыз?
Машиналық тіл дегеніміз не№
Тапсырмалар:
Ақпаратты кодтау мен декодтауға мысалдар келтіріңіз.
«ЭЕМ» сөзі СР1251 кодымен берілген. Осы сөзді КОИ8 және ISO кодтау жүйелеріндегі кодын табыңыз.
Ондық жүйедегі 130, 131 сандарын екілік кодтау жүйесінде жазыңыз.
Зертханалық жұмыс №2 (3 сағат)
Тақырып: Сандық ақпаратты көрсету формалары
Бекітілген үтірлі (нүктелі) сандарды көрсету.
Сандарды жылжымалы үтірлі формада көрсету.
Теріс сандарды көрсету.
Сандық ақпаратты көрсету қателіктері.
Қысқаша мәлімет
(ЭЕМ жадысында мәліметтерді көрсету)
ЭЕМ эжадысында мәліметтерді көрсету үшін кодтаудың екілік тәсілі (сандық ақпарат үшін де, сандық емес үшін де) қолданылады. ЭЕМ жадысының элементар ұяшығы 8 байт ұзындыққа ие. Әр байттың өзінің нөмірі бар (оны адрес деп атайды). ЭЕМ бір бүтін ретінде өңдей алатын ең үлкен бит тізбегін машиналық сөз деп атайды. Машиналық сөздің ұзындығы процессордың разрядтылығына байланысты болады және 16,32 және т.с.с. битке тең болуы мүмкін.
Символдарды кодтау үшін 1 байт жеткілікті. Мұнда 256 символ көрсетуге болады. ЭЕМ IBM PC дербес компьютерлеріндегі символдар жиынтығы көбінесе ASCII (American Standard Code for Information Interchange — ақпарат алмасуға арналған стандарты американдық код) кеңейтілуі бар код болады
ЭЕМ жадысында сандарды көрсету кезінде кей жағдайларда аралас екілік-ондық санау жүйесі қолданылады, мұндағы әрбір ондық таңбаны сақтау үшін жартыбайт (4 бит) қажет болады және 0-ден 9-ға дейінгі ондық сандар сәйкесінше 0000-ден 1001-ге дейінгі екілік сандармен көрсетіледі. Мысалы, 18 мәндік цифрлары бар бүтін санды сақтауға арналған және жадыда 10 байт (үлкені таңбалық) орын алатын капталған ондық формат осы нұсқаны қолданады.
Сандарды көрсетудің басқа тәсілі – қосымша код. Шамалардың мәндерінің диапазоны оларды сақтауға бөлінген жады биттерінің санына тәуелді. Мысалы, Integer типті шамалар –32768 (–215)-нан 32767 (215 – 1)-ға дейінгі диапазонда жатады және оларды сақтауға 2 байт жұмсалады; LongInt типті шама –231 –ден 231 – 1-ге дейінгі диапазонда жатады; Word типті — 0-ден 65535 (216 – 1)-ге дейінгі диапазонжа жатады және т.с.с.
Мысалдардан көріп отырғандай мәліметтер таңбалы және таңбасыз сандар ретінде келтіріледі. Таңбалы шаманы көрсету кезінде сол жағындағы (ең үлкен) разряд 0-ге тең болса, оң санды көрсетеді, 1-ге тең болса, теріс санды көрсетеді.
Жалпы разрядтар 0-ден бастап оңнан солға қарай нөмірленеді. Төменде екі байты машиналық сөздегі нөмірлеу келтірілген.
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Оң санның қосымша коды оның тура кодына сәйкес келеді. Бүтін санның тура коды келесі түрде алынады: сан екілік санау жүйесіне аударылады, содан кейін оның екілік жазбасын сан жататын мәліметтер типі талап ететін 0-дер санымен толықтырылады. Мысалы, егер 37(10) = 100101(2 саны Integer типінің шамасы ретінде жарияланса, оның тура коды 0000000000100101 болады, ал егер 37(10) = 100101(2) саны LongInt типі ретінде жарияланса, онда оның тура коды 00000000000000000000000000100101 болады. Неғұрлым шағын жазба үшін оналтылық кодты жиі қолданады. Алныған кодтарды сәйкесінше 0025(16) и 00000025(16) деп жазуға болады.
Бүтін теріс санның қосымша кодын келесі алгоритммен алуға боолады:
1) санның модулінің тура кодын жазу керек;
2) оны инверттеу (нольдерді бірліктермен, ал бірліктерді нольдермен ауыстыру);
3) инверстік кодқа бірлікті қосу.
Мысалы, (–37) санының қосымша кодын LongInt типті шама ретінде алып жазамыз.
1) 37 санының тура коды 00000000000000000000000000100101 болады;
2) инверттік коды 11111111111111111111111111011010;
3) қосымша коды 11111111111111111111111111011011 немесе FFFFFFDB(16).
Санды оның қосымша коды арқылы алу үшін ең алдымен оның таңбасын анықтап алу қажет. Егер сан оң сан болса, онда оның кодын тек ондық санау жүйесіне аудару қажет болады. Теріс сан болған жағдайда келесі алгоритмді орындау қажет:
1) санның кодынан 1-ді азайту;
2) кодты инверттеу;
3) ондық санау жүйесіне аудару. Алынған санды теріс таңбамен жазу.
Мысалдар. Қосымша кодтарға сәйкес келетін сандарды жазайық:
а) 0000000000010111. Үлкен разрядта ноль жазылғандықтан нәтиже оң болады. Бұл 23 санының коды.
б) 1111111111000000. Мұнда теріс санның коды жазылған. Алгоритмді орындаймыз:
1) 1111111111000000(2) – 1(2) = 1111111110111111(2);
2) 0000000001000000; 3) 1000000(2) = 64(10).
Жауап: –64.
Дербес компьютердің жадысында нақты сандарды көрсету үшін басқадай тәсіл қолданылады. Жылжымалы үтірлі шамаларды көрсетуді қарастырамыз:
Кез-келген нақты санды M × 10p, где 1 £ M < 10 стандартты түрде жазуға болады, мұндағы 1 £ M < 10, p — бүтін. Мысалы, 120100000 = 1,201 × 108. Ондық санның әр позицицясы көршісінен 10 санының дәрежелеріндей айырмашылығы болатындықтан, 10-ға көбейту ондық үтірді бір позиция оңға жылжытуға эквивалентті. Осылайша 10-ға бөлу ондық үтірді бір позиция солға жылжытуға пара-пар. Сондықтан жоғарыда келтірілген мысалды жалғастыруға болады. 120100000 = 1,201 × 108 = 0,1201 × 109 = 12,01 × 107¼. Ондық үтір санда «жылжиды» және санның бүтін және бөлшек бөліктеріндегі абсолютті орны белгіленбеген.
Жоғарыда келтірілген жазбада М-ді санның матиссасы деп, ал p – оның реті деп аталады. Максималды дәлдікті сақтау үшін есептеуіш машиналар мантиссаны үнемі дерлік нормальданған түрде сақтайды, бұл мантисса осы жағдайда 1(10) и 2(10) (1 £ M < 2).. аралығында жататын сан дегенді білдіреді. Мұнда санау жүйесінің негізі 2 саны. Жылжымалы үтірлі мантиссаны сақтау тәсілі екілік үтірдің бекітілген орында тұрғанын білдіреді. Шын мәнісінде екілік үтір бірінші екілік цифрдан кейін тұрады, яғни, мантиссаны нормальдау бірінші битті жалғыздайды, осымен мәнді 1 мен 2-нің аралығына орналастырады. Жылжымалы нүктелі санға берілген орын екі өріске бөлінеді. Бір өріс мантиссаның таңбасы мен мәнінен тұрады, келесісі ретінің таңбасы мен мәнінен түрады.
Математикалық соопроцессоры бар IBM PC дербес компьютері келесі нақты сандармен жұмыс істеуге мүмкіндік береді (мәндердің диапазоны абсолютті шама бойынша көрсетілген):
Типі
|
Диапазоны
|
Мантиссасы
|
Байттар
|
Real
|
2,9 × 10–39..1,7 × 1038
|
11–12
|
6
|
Single
|
1,5 × 10–45..3,4 × 1038
|
7–8
|
4
|
Double
|
5,0 × 10–324..1,7 × 10308
|
15–16
|
8
|
Extended
|
3,4 × 10–4932..1,1 × 104932
|
19–20
|
10
|
Нақты сандардың ЭЕМ жадысында көрсетілуіне арналған түрлендірулерін Double типті шаманың мысалында көрейік.
Кестеде көрініп тұрғандай, осы типтің шамасы жадыдан 8 байт орын алады. Суретте мантиссаның және реттің өрістерінің көрсетілуі берілген:
S
|
Аралас рет
|
Мантисса
|
63
|
52
|
0
|
Мантиссаға берілген үлкен бит 51-ші нөмір екенін, яғни мантисса 52 биттің кішілерін алады. Сызықша екілік үтірдің орнын көрсетеді. Үтірдің алдында мантиссаның бүтін бөлігінің биті түруы қажет, бірақ ол үнемі 1-ге тең болғандықтан бұл жерде осы бит қажет емес және сәйкесінше жадыда жоқ (бірақ ол ойда). Реттің мәні бұл жерде қосымша кодпен көрсетілген бүтін сан ретінде сақталмайды. Есептеулерді оңайлату және нақты сандарды салыстыру үшін реттің мәні ЭЕМ-де аралас сан ретінде сақталады, яғни, реттің осы мәніне оның жадыға жазылар алдында жылжу қосылады. Жылжу реттің минимальды мәніне ноль сәйкес келетіндей болып таңдалынады. Мысалы, Double типі үшін рет 11 бит орын алады және 2–1023-ден 21023-ге дейінгі диапазонға ие, сондықтан жылжу 1023(10) = 1111111111(2)-ге тең. Сонымен, 63 номерлі бит санның таңбасын кқрсетеді.
Осылайша, жоғарыда айтылғандардан ЭЕМ жадысында нақты сандарды көрсетуді алудың келесі алгоритмі туындайды:
1) берілген санның содулін екілік санау жүйесіне аудару;
2) екілік санды нормальдау, яғни M × 2p, түрінде жазу, мұндағы M — мантисса (оның бүтін бөлігі 1(2)-ге тең) және p —ондық санау жүйесінде жазылған рет;
3) жылжу ретіне қосу және жылжытылған ретті екілік санау жүйесіне аудару;
4) берілген санның таңбасын (0 — оң; 1 — теріс) ескере отырып, оның ЭЕМ жадысында көрсетілуін жазу.
Мысал. –312,3125 санының кодын жаз.
1) Осы санның модулінің екілік жазбасы: 100111000,0101.
2) 100111000,0101 = 1,001110000101 × 28.
3) аралас рет аламыз 8 + 1023 = 1031. Осыдан, 1031(10) = 10000000111(2).
4) Соңғысы
1
|
10000000111
|
0011100001010000000000000000000000000000000000000000
|
63
|
52
|
0
|
Әрине алынған кодты неғұрлым шағын түрде келесідей жазуға болады: C073850000000000(16).
Келесі мысал нақты санның кодынан керісінше санның өзіне өтуді қарастырады.
Мысал. Айталық, келесі код берілсін: 3FEC600000000000(16) немесе
0
|
01111111110
|
1100011000000000000000000000000000000000000000000000
|
63
|
52
|
0
|
1) Алдымен оның оң санның коды екенін байқаймыз, себебі 63 нөмірлі разрядта ноль жазылған. Осы санның ретін алайық: 01111111110(2) = 1022(10); 1022 – 1023 = –1.
2) сан мына түрге ие: 1,1100011 × 2–1 немесе 0,11100011.
3) ондық санау жүйесіне аударып, келесіні аламыз: 0,88671875.
Зертханалық жұмыстарға тапсырма:
1. Берілген санды ондық жүйеден ондық-екілік жүйеге аудар.
2. Берілген санды екілік-ондық жүйеден ондық жүйеге аудар.
3. Берілген мәтінді ASCII кодтар кестесін пайдаланып шифрла.
4. Осы мәтінді ASCII кодтар кестесін пайдаланып дешифрла.
5. Санның тура кодын оны таңбасыз сегізбайтты бүтін сан ретінде жазыңыз..
6. Санның қосымша кодын оны таңбалы сегізбайтты бүтін сан ретінде жазыңыз.
7. Санның тура кодын оны таңбасыз оналтыбайтты бүтін сан ретінде жазыңыз.
8. Санның қосымша кодын оны таңбалы оналтыбайтты бүтін сан ретінде жазыңыз.
9. Санды оның берілген қосымша коды арқылы ондық санау жүйесінде бүтін сан ретінде жазыңыз.
10. Нақты санның кодын Double типті шама ретінде көрсетіп жазыңыз.
11. Double типті шама коды берілген. Оны санға айналдырыңыз.
Достарыңызбен бөлісу: |