120 likes | 302 Views
Опериране с битове. 1. Поразредни логически операции. Целите числа могат да се разглеждат като редица от битове. В Паскал има 6 поразредни логически операции: not, and, or, xor, shl и shr. Всеки един бит е достъпен и може да бъде прочетен или променен. 2. Операцията not.
E N D
1. Поразредни логически операции • Целите числа могат да се разглеждат като редица от битове. • В Паскал има 6 поразредни логически операции: not, and, or, xor, shl и shr. • Всеки един бит е достъпен и може да бъде прочетен или променен.
2. Операцията not • Нека имаме следните константи К=3 (K=00000011(2)); М=17 (M=00010001(2)); N=14 (N=00001110(2)); • Операцията notе едноаргументна и инвертира битовете на аргумента. • Writeln(not M); (Резултат: 18 (11101110(2))) • Първият бит е знаков: • 1 е за знака “-”; • 0 е за знака “+”.
3. Операцията and • Нека имаме следните константи К=3 (K=00000011(2)); М=17 (M=00010001(2)); N=14 (N=00001110(2)); • Операцията andе двуаргументна и представлява операцията конюнкция- побитово. • Writeln(Mand N); (Резултат: 0 (00000000(2))).
4. Операцията or • Нека имаме следните константи К=3 (K=00000011(2)); М=17 (M=00010001(2)); N=14 (N=00001110(2)); • Операцията orе двуаргументна и представлява операцията дизюнкция- побитово. • Writeln(Mor N); (Резултат: 31 (00011111(2))).
5. Операцията xor • Нека имаме следните константи К=3 (K=00000011(2)); М=17 (M=00010001(2)); N=14 (N=00001110(2)); • Операцията xorе двуаргументна и представлява операцията дизюнкция- побитово. • Writeln(Mxor N); (Резултат: 31 (00011111(2))). • Writeln(Mxor K); (Резултат: 18 (00010010(2))).
6. Операцията shl (изместване наляво) • Нека имаме следните константи К=3 (K=00000011(2)); М=17 (M=00010001(2)); N=14 (N=00001110(2)); • Операцията shlе двуаргументна и представлява изместване на битовете наляво толкова позиции, колкото е стойността на втория аргумент. • Writeln(Mshl (K-1)); (Резултат: 68 (01000100(2))).
7. Операцията shr (изместване надясно) • Нека имаме следните константи К=3 (K=00000011(2)); М=17 (M=00010001(2)); N=14 (N=00001110(2)); • Операцията shrе двуаргументна и представлява изместване на битовете на надясно толкова позиции, колкото е стойността на втория аргумент. Освободените позиции се запълват с знаковия бит, ако типа е shortint, integer, longint и 0 в останалите случаи. • Writeln(Mshr K); (Резултат: 2 (00000010(2))).
8. Представяне на отрицателните цели числа • Определение: Нека N е цяло число, записано в двоична бройна система, т.е. N=а1а2...аn, където ai{0,1}, i=1,2,…,n. Допълнителният кодNдопна числото N се определя с: Nдоп = където b1b2...bn=2n- а1а2...аn,bi{0,1}, i=1,2,…,n. 0 а1а2...аn, при N0; 1b1b2...bn, при N<0,
9. Алгоритъм за намиране на допълнителния код на произволно цяло отрицателно число: • В поле М от k бита се записва положителното число |N|. • Инвертират се битовете на полето M. • Прибавя се 1 към последната позиция на полето М. • Получената последователност от битове в полето М е допълнителният код на числото N.
10. Пример за намиране на допълнителния код на произволно цяло отрицателно число • Нека N=-18, k=8 • |N|=00010010 • Not(|N|)=11101101 • Not(|N|)+1=11101110
11. Шестнадесетични числа • Азбука- 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. • Декларирането имв езика Паскал става със знака $. • Примери: • $А123 • $10F5 • $901E7