Задача - Битовые операции над числами - программирование на разных языках

Задача — Битовые операции над числами — программирование на разных языках

Задачи по программированию с решением для школьников
Want create site? Find Free WordPress Themes and plugins.

Задача — Битовые операции над числами
— программирование на Pascal, Си, Кумир, Basic-256, Python

Выполнить логические побитовые операции «И», «ИЛИ» и др. над числами 5 и 6. Выполнить над числом 5 побитовый сдвиг вправо и влево на два знака. Объяснить полученный результат.

Обычно в языках программирования предусмотрены так называемые логические побитовые операции. Они выполняются не над самими числами, а над их двоичным представлением. Например, число 5 в двоичной системе счисления выражается как 101, а число 6 — как 110. Выполняя логическую побитовую операцию «И» получим число 4, т.к. в младшим разряде числа 5 стоит 1, а числа 6 — 0. Выражение «1 и 0» возвращает 0. Продолжая поразрядно выполнять логическое «И» в среднем разряде получим 0, а в старшем 1. Можно записать так:
101
110
100
Двоичное число 100 — это десятичное число 4.

Выполним операцию побитового логического «ИЛИ»:
101
110
111 — это число 7.

«Исключающее ИЛИ»:
101
110
011 — это число 3.

При сдвиге биты просто сдвигаются на указанное количество ячеек в освободившиеся ячейки дописываются нули или единицы (это зависит от ряда причин):
110 << 2 = 11000 (число 24),
110 >> 2 = 001 (число 1).

Pascal

var
a, b: byte;
begin
a := 5;
b := 6;
writeln(‘a=’, a);
writeln(‘b=’, b);
writeln(‘a and b = ‘, a and b);
writeln(‘a or b = ‘, a or b);
writeln(‘a xor b = ‘, a xor b);
writeln(‘b shl 2 = ‘, b shl 2);
writeln(‘b shr 2 = ‘, b shr 2);
end. a=5
b=6
a and b = 4
a or b = 7
a xor b = 3
b shl 2 = 24
b shr 2 = 1

В Паскале обычные логические операции и побитовые обозначаются одинаково. Первые применяются, если операнды имеют булевый тип (они получаются в результате простых логических операций >, < и др.), а вторые — если операнды представляют собой целые числа (неважно какого типа).

Язык Си

#include <stdio.h>

main() {
int a, b;
a = 5;
b = 6;
printf(«%d & %d = %dn», a, b, a & b);
printf(«%d | %d = %dn», a, b, a | b);
printf(«%d ^ %d = %dn», a, b, a ^ b);
printf(«%d << 2 = %dn», b, b << 2);
printf(«%d >> 2 = %dn», b, b >> 2);
} 5 & 6 = 4
5 | 6 = 7
5 ^ 6 = 3
6 << 2 = 24
6 >> 2 = 1

Python

a = 5
print(«%d = %s» % (a, bin(a)))
b = 6
print(«%d = %s» % (b, bin(b)))

print(«%d & %d = %d (%s)» % (a,b,a&b,bin(a&b)))
print(«%d | %d = %d (%s)» % (a,b,a|b,bin(a|b)))
print(«%d ^ %d = %d (%s)» % (a,b,a^b,bin(a^b)))
print(«%d << 2 = %d (%s)» % (b,b<<2,bin(b<<2)))
print(«%d >> 2 = %d (%s)» % (b,b>>2,bin(b>>2))) 5 = 0b101
6 = 0b110
5 & 6 = 4 (0b100)
5 | 6 = 7 (0b111)
5 ^ 6 = 3 (0b11)
6 << 2 = 24 (0b11000)
6 >> 2 = 1 (0b1)

Basic-256

a = 5
b = 6
print «5 & 6 = » + (a&b)
print «5 | 6 = » + (a|b) 5 & 6 = 4
5 | 6 = 7

Из битовых операторов в Basic-256 нашлись только «И», «ИЛИ» и отрицание. Исключающего «ИЛИ», а также сдвигов нет.

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий