
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
Бітавая арыфметыка
Бітавая, або паразрадная, арыфметыка добра развіта ў мове Pascal. Неабходнасць у ёй узнікае, калі трэба працаваць не з дзесятковымі значэннямі лікаў, а з іх двайковым уяўленнем. Бітавыя аперацыі дазваляюць параўноўваць асобныя біты двух лікаў, вылучаць асобныя фрагменты ў ліку, замяняць іх.
Бітавыя аперацыі над сапраўднымі лікамі не прымяняюцца. Яны прымяняюцца толькі над цэлымі тыпамі – Byte, Shortint, Word, Integer, Longint.
Агульная формула для значэнняў даных бяззнакавых тыпаў Byte (1 байт) і Word (2 байты) мае наступны выгляд:
Byte:
значэнне
;
Word:
значэнне
.
Значэнні
разрадаў
,
,
..., роўныя або 0, або
1, адпаведна множацца
на вагу разраду. Адсюль атрымліваем
дыяпазон уяўлення:
Byte:
Word:
Унутранае адрозненне маюць уяўленні цэлых тыпаў са знакамі Shortint, Integer, Longint. Самы левы біт адводзіцца пад знак, для адмоўнага ліку ён роўны 1, для дадатнага – 0.
Можна запомніць формулу перакладу з 2-й с/зл у іншую сістэму злічэння для тыпаў Shortint (1 байт), Integer (2 байты), Longint (4 байты):
Shortint:
значэнне
;
Integer:
значэнне
;
Longint:
значэнне
.
Адсюль дыяпазон уяўлення лікаў:
а) дадатныя Integer (2 байты):
б) адмоўныя Integer (2 байты) (найменшае атрымаем, калі нічога не будзем дадаваць):
в) дадатныя Shortint (1 байт):
г) адмоўныя Shortint (1 байт):
Дзеянні бітавай арыфметыкі
Першая група паразраднай арыфметыкі – гэта лагічныя аперацыі над бітамі.
Аперацыі |
Назва |
Форма запісу |
Прыярытэт |
Тып |
NOT |
Паразраднае адмаўленне |
NOT A |
1 (вышэйшы) |
Унарны |
AND |
Лагічнае множанне (і) |
A1 AND A2 |
2 |
Бінарны |
OR |
Лагічнае складанне (ці) |
A1 OR A2 |
3 |
|
XOR |
Якая выключае «ці» |
A1 XOR A2 |
4 (ніжэйшы) |
NOT – паразраднае адмаўленне – «пераварочвае» значэнне кожнага біта на процілеглае.
Прыклад. Няхай A = 01101100. Тады NOT A = 10010011.
AND, OR, XOR – лагічныя аперацыі, выконваюцца паразрадна ў адпаведнасці з наступнай табліцай тоеснасці.
A |
B |
A AND B |
A OR B |
A XOR B |
A XOR B XOR B |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
Прыклад.
Няхай
,
і X,
Y –
пераменныя
тыпу
Shortint.
Пакажам, што
.
Рашэнне:
Заўвага. Аперацыя AND у 99 % выпадкаў патрэбна для дзвюх мэт: 1) праверыць наяўнасць канкрэтных бітаў ці 2) зануліць некаторыя з іх.
Калі выконваецца ўмова (X and 32) = 32, тады ў пятым біце пераменнай Х ёсць адзінка (адзінка ў пятым біце дае лік 25 = 32).
Можна праверыць наяўнасць адразу некалькіх уключаных бітаў, напрыклад пятага, другога і нулявога. Атрымаем лік 25 + 22 + 20 = 37. Калі (X and 37) = 37, то так яно і ёсць.
Калі трэба зануліць (выключыць) нейкі біт у пераменнай, тады трэба падрыхтаваць лік, у якім гэты біт нулявы:
– выключылі трэці біт, бо 8 = 23;
– выключылі трэці і сёмы
біты,
бо 23 = 8,
27 = 128.
Лагічнае складанне
OR
з поспехам выкарыстоўваецца пры ўстаноўцы
ў значэнне 1 (уключэнні) асобных
бітаў двайковага ўяўлення цэлых лікаў:
– уключылі чацвёрты,
першы
і нулявы
біты, бо 24 = 16, 21 = 2,
20 = 1.
XOR, якое выключае «ці» (або параўнанне па модулі 2), зварочвае 0, калі абодва аргументы роўныя, і 1 – калі не.
Наступная група паразрадных аперацый – цыклічныя зрухі.
Аперацыя |
Назва |
Форма запісу |
shl |
Цыклічны зрух на N пазіцый улева (l) |
A shl N |
shr |
Цыклічны зрух на N пазіцый управа (r) |
A shr N |
Прыярытэт
аперацый – як у
.
Сутнасць
аперацый
і
аднолькавая: яны зрушваюць двайковую
паслядоўнасць значэння A
на N бітаў адпаведна
ўлева або ўправа. Пры гэтым біты, якія
знікаюць за краем
разраднасці, губляюцца, а разрады,
якія вызваліліся, запаўняюцца нулямі.
Рэалізацыя аперацый
і
залежыць ад кампілятара.
паколькі
;
паколькі
У даных тыпу Byte, Shortint зрушваецца поле з 8 бітаў; тыпу Word, Integer – 16 бітаў; Longint – 32 біты. Браць N больш за гэтыя велічыні або адмоўным бяссэнсава – вынікам будзе 0.
Аперацыя
можа замяняць множанне гэтых лікаў на
ступені двойкі, пры гэтым не ўзнікае
«перапаўнення», але можам
атрымаць дрэнны вынік – прападзе
старэйшы біт. Напрыклад:
j shl
3 = j*8,
а shr
– цэлалікавае дзяленне на ступені
двойкі; j shl
1 = [j/2],