Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamenatsionnye_voprosy_po_Informatike2 от шал...doc
Скачиваний:
8
Добавлен:
20.09.2019
Размер:
1.92 Mб
Скачать

X xor y (Исключающее или)

x

Ложь

Истина

NOT x

Истина

Ложь

NOT x (НЕ)

Побитовые операции.

Побитовые операции выполняют действия над каждым битом в числе. Бит минимальная единица представления информации компьютере, он может хранить только два значения 0 или 1.

Вся информация в компьютере представляется в двоичном виде, то есть в виде последовательностей бит, но бит слишком маленькая величина, поэтому минимальная единица, которую компьютеры могут хранить и с которой они могут работать это байт(впрочем, обычно компьютеры работают с 32 или 64 битами).В одном байте 8 бит.

Все числа в компьютере составлены из бит, например числа 131 это следующая последовательность бит 10000011. К сожалению, более подробные объяснения в книгу не поместятся.

Так как, логический тип очень похож на один бит (так как он принимает два значение истина или ложь),то и логические операции имеют свои аналоги в побитовых, которые работают одинаково, но это не значит, что логические и побитовые операции это одно и тоже.

Рассмотрим виды побитовых операций:

1) Аналог логических операций: Or, And, Not, Xor.

2) Сдвиг влево и вправо (безнаковый сдвиг влево, знаковый сдвиг влево)

3) Циклические сдвиги.

Рассмотрим их более подробно:

1)Аналог логических операций (работают точно так же как логичные, если истину заменить на 1,ложь на 0

y x

0

1

0

0

1

1

1

1

x OR y (ИЛИ)

y x

0

1

0

0

0

1

0

1

x AND y (И)

y x

0

1

0

1

0

1

0

1

x XOR y (Исключающее ИЛИ)

x

0

1

NOT x

1

0

NOT x (НЕ)

Эти побитовые операции независимо от других бит изменяют значение каждых битов, то есть они действуют таким образом, например:

x

0

1

1

0

0

1

0

1

y

0

0

1

0

0

1

1

0

x Or y

0

1

1

0

0

1

1

1

x AND y

0

0

1

0

0

1

0

0

x XOR y

1

0

1

1

1

1

0

0

NOT x

1

0

0

1

1

0

1

0

Рассмотрим как реализуются эти четыре операции в различных языках (Basic,PL-SQL??):

Операция

C++, C#, Java, JavaScript, Java, Transact-SQL

Delphi

VFP

OR

x|y

x or y

bitnot(x)

AND

x&y

x and y

bitor(x,y)

XOR

x^y

x xor y

bitand(x,y)

NOT

~x

not x

bitxor(x,y)

2) Сдвиг влево и вправо заключается в том, что биты в числе перемещаются влево или вправо на заданное количество позиций. При обычном сдвиге биты вышедшие за границы числа пропадают, а на пустые места записываются нули, при циклическом сдвиге биты, вышедшие за границы числа, возвращаются с другой стороны числа на пустые места.

Рассмотрим как реализуются операции сдвига в различных языках (Basic,PL-SQL??):

Операция

C++, C#, Java, JavaScript, Java, Transact-SQL, Visual Basic,VBScript

Delphi

VFP

сдвиг влево

x<<l

x shl y

bitlshift(x,l)

сдвиг вправо

x>>l

x shl y

bitrshift(x,l)

Так как побитовые операции используются сравнительно редко, то в некоторых языках вместо побитовых операций используются функции с аналогичными возможностями.

Рассмотрим реализацию побитовых операций в разных языках (под х обозначаем первый аргумент, под у - второй аргумент, l - сдвиг):

Сдвиг вправо это самый быстрый способ возведения числа в степень двойки, сдвиг влево это самый быстрый способ получения корня степени двойки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]