Непейвода Н.Н. Программирование. Раздел 2

Непейвода Н.Н. Программирование. Страница 218

Некоторые операции определяются лишь через конкретные машинные представления операндов. Таковы, в частности, поразрядные логические операции в общераспространенных языках программирования. В языке С это операции &, |, Л. Для их понимания нужно помнить, что С рассчитан только на такие машины, в которых целые числа (да и другие объекты) име­ют машинное представление в виде последовательности битов. Результат

операции & — число, каждый двоичный разряд которого получается обыч­ной булевской конъюнкцией соответствующих разрядов операндов. Соответ­ственно, | означает поразрядную дизъюнкцию, ~ — поразрядное отрицание (инвертирование всех битов), Л— поразрядное исключающее или.

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

Аналогичные операции в языке Pascalобозначаютсяand, or, not, xor.

Язык С отличается фантастической непоследовательностью в употреб­лении символов операций. Один и тот же символ операций имеет абсолютно разный смысл, когда он употребляется как бинарная операция и как унарная. Например, * как бинарная операция означает умножение, а как унарная — взятие значения по данному адресу. &как бинарная операция означает по­разрядную конъюнкцию машинных представлений своих операндов, а как унарная — получение адреса стоящего после нее имени. Даже столь безобид­ная операция, как унарный +, может привести к изменению значения изза неявного преобразования в другой тип.

В языкахС++, Adaи Алгол68 все операции, имеющиеся для некоторого типа, могут переноситься на любой другой тип данных, определенный в программе. Для этого необходимо явно определить их смысл для аргументов нового типа. В Алголе68 имеется даже внутренняя система определения новых операций.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама