Маніпулювання бітами

Логічні операції діють точно таким же чином, як і операції відносини при цьому програма явним чином користується значеннями ІСТИНА і НЕПРАВДА Наведений нижче фрагмент програми ілюструє таке вживання цих значень для міні-ЕОМ, в якій ІСТИНА представлено значенням 1 (мікроЕОМ може діяти інакше, див нижче):

10 REM ДЕМОНСТРАЦІЯ ДІЇ ЛОГІЧНИХ ОПЕРАЦІЙ

15 REM (НЕ ДЛЯ МІКРО-ЕОМ)

20 INPUT Введіть А, В; А, В

30 PRINT NOT А ОДНО (NOT (A))

40 PRINT NOT В ОДНО; (NOT (B))

50 PRINT A AND В =; ((A) AND (B))

60 PRINT A OR В = ((A) OR (B))

70   STOP

80   END

RUN

ВВЕДІТЬ А, В

?40

NOT А ОДНО 0

NOT В ОДНО 1

A AND В = 0

A OR В = 1

END AT LINE 80

RUN

ВВЕДІТЬ A, B

?1213

NOT А ОДНО 0

NOT В ОДНО 0

A AND В = 1

A OR В = 1

END AT LINE 80

RUN

ВВЕДІТЬ A, В

?-6790

NOT А ОДНО 0

NOT В ОДНО 0

A AND В = 1

A OR В = 1

END AT LINE 80

Результати виконання цієї програми узгоджуються з прийнятим в Бейсике загальним угодою, що БРЕХНЯ представляється нульовим значенням, а ІСТИНА ненульовим В даному випадку, в системі ICL 2904, результати виконання операції проводилися з прийнятого в цій системі вибору представлення ІСТИНИ (у нашому випадку +1), а не з довільного ненульового значення (див табл 61) Допустима запис

IF (В) THEN 500

де В містить значення, яке може бути інтерпретоване як ІСТИНА або БРЕХНЯ Але остерігайтеся безладного застосування цієї конструкції, так як оператор

IF (A) OR(B&gtC) THEN 500

означає зовсім не те, що можна собі уявити, читаючи його як пропозиція англійською мовою Результати застосування логічних операцій до довільних значень у багатьох мікроЕОМ трохи відрізняються Врахуйте, проте, що якщо значенням БРЕХНЯ і ІСТИНА відповідають 0 і -1 (або +1 в деяких системах), то результатами застосування логічних операцій повинні бути ці ж числа Якщо в якості операндів задати довільні значення, то логічні операції будуть діяти побітовим чином Інакше кажучи, вони візьмуть відповідні біти кожного з операндів і виконають над ними необхідну операцію, що дасть один біт результату Стандартна таблиця фактично дублює ті, що були наведені раніше, але показує поведінку окремих бітів (тільки 0 або 1) при виконанні над ними логічних операцій:

Біт а

Біт b

Біт а

AND

біт b

Біт а

OR

біт b

Біт а

XOR

біт b

Біт а

IMP

біт b

Біт а

EQV

біт b

0

0

0

0

0

1

1

Перш ніж виконувати операції над бітами, більшість систем для мікроЕОМ перетворює

операнди в 16-бітові цілі числа в діапазоні -32768 .. +32 767, що подаються в додатковому коді (у вигляді доповнення до двох) Якщо хоча б один з операндів лежить поза цього діапазону, то фіксується помилка

Отже, виконання попередньої програми на більшості мікроЕОМ призведе до наступних результатів:

10 REM ДЕМОНСТРАЦІЯ ДІЇ ЛОГІЧНИХ ОПЕРАЦІЙ

15 REM (ДЛЯ МІКРО-ЕОМ)

20 INPUT Введіть А, В; А, В

30 PRINT NOT А ОДНО; (NOT (A))

40 PRINT NOT В ОДНО; (NOT (B))

50 PRINT A AND В =; ((A) AND (B))

60 PRINT A OR В =; ((A) OR (B))

70 END RUN

ВВЕДІТЬ АВ6316

NOT А ОДНО -64

NOT В ОДНО -17

A AND В = 16

A OR В = 63

END AT LINE 70

RUN

ВВЕДІТЬ АВ-16

NOT А ОДНО 0

NOT В ОДНО -9

A AND В = 8

A OR В = -1

END AT LINE 70

RUN

ВВЕДІТЬ АВ-1-2

NOT А ОДНО 0

NOT В ОДНО 1

A AND В = -2

A OR В = -1

END AT LINE 70

Щоб надати їм сенс, використовуйте наведену вище таблицю побітових операцій і не забудьте, що числа представляють в додатковому коді

Наприклад,

63 одно

-64 Одно

0000

0000

0011

111

1

1111

1111

1100

000

0

16 одно

0000

0000

0001

000

0

-17

одно

1111

1111

1110

111

1

-1

одно

1111

1111

1111

111

1

0

дорівнює

0000

0000

0000

000

0

8

одно

0000

0000

0000

100

0

-9

одно

1111

1111

1111

011

1

-2

одно

1111

1111

1111

111

1: 0000 0000 0000 000

Двійкові подання всіх цих чисел дано в 16-бітовому додатковому коді Для зручності читання біти згруповані по чотири Логічними операціями можна користуватися для утворення чи Маскування певних бітів в байті, яким можна маніпулювати в програмі на Бейсике за допомогою операторів рейок (витягнути) і Роке (помістити) Крім того, ці операції можуть знадобитися при виконанні операцій введення-виведення, наприклад для перевірки значень різних бітів байта стану, що описує дію дискового контролера

Джерело: Уолш Б Програмування на Бейсике: Пер з англ М: Радіо і звязок, 1988 336 с: ил

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*