integer
|
integer
|
integer
|
integer
|
int64
|
int64
|
uint64
|
BigInteger
|
single
|
real
|
word
|
integer
|
integer
|
integer
|
integer
|
integer
|
longword
|
int64
|
uint64
|
BigInteger
|
single
|
real
|
integer
|
integer
|
integer
|
integer
|
integer
|
integer
|
int64
|
int64
|
uint64
|
BigInteger
|
single
|
real
|
longword
|
int64
|
longword
|
int64
|
longword
|
int64
|
longword
|
uint64
|
uint64
|
BigInteger
|
single
|
real
|
int64
|
int64
|
int64
|
int64
|
int64
|
int64
|
uint64
|
int64
|
uint64
|
BigInteger
|
single
|
real
|
uint64
|
uint64
|
uint64
|
uint64
|
uint64
|
uint64
|
uint64
|
uint64
|
uint64
|
BigInteger
|
single
|
real
|
BigInteger
|
BigInteger
|
BigInteger
|
BigInteger
|
BigInteger
|
BigInteger
|
BigInteger
|
BigInteger
|
BigInteger
|
BigInteger
|
-
|
-
|
single
|
single
|
single
|
single
|
single
|
single
|
single
|
single
|
single
|
-
|
single
|
real
|
real
|
real
|
real
|
real
|
real
|
real
|
real
|
real
|
real
|
-
|
real
|
real
|
То есть, если операнды - целые, то результатом является самый короткий целый тип, требуемый для представления всех получаемых значений.
При выполнении бинарной операции с uint64 и знаковым целым результирующим типом будет uint64, при этом может произойти переполнение, не вызывающее исключения.
Для операции / данная таблица исправляется следующим образом: результат деления любого целого на целое имеет тип real.
Для операций divи modвыполняются эти же правила, но операнды могут быть только целыми. Правила вычисления операций divи mod- следующие:
x divy - результат целочисленного деления x на y. Точнее, x divy = x / y, округленное до ближайшего целого по направлению к 0;
x mody - остаток от целочисленного деления x на y. Точнее, x mody = x - (x divy) * y.
Унарная арифметическая операция + для любого целого типа возвращает этот тип. Унарная арифметическая операция - возвращает для целых типов, меньших или равных integer, значение типа integer, для longword и int64 - значение типа int64, к uint64 унарная операция - не применима, для типов single и real - соответственно типы single и real. То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений.
К логическим относятся бинарные операции and, orи xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Эти операции подчиняются стандартным правилам логики: a andb истинно только тогда, когда истинны a и b, a orb истинно только тогда, когда истинно либо a, либо b, a xorb истинно только тогда, когда только одно из a и b истинно, nota истинно только тогда, когда a ложно.
Выражения с andи orвычисляются по короткой схеме :
в выражении x andy если x ложно, то все выражение ложно, и y не вычисляется;
в выражении x ory если x истинно, то все выражение истинно, и y не вычисляется.
К побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xorбудет наименьшим целым, включающим все возможные значения обоих типов операндов. Для shl, shrрезультирующий тип совпадает с типом левого операнда, для not- с типом операнда.
Побитовые операции осуществляются следующим образом: с каждым битом (0 принимается за False, 1 - за True) производится соответствующая логическая операция. Например:
00010101 and00011001 = 00010001
00010101 or00011001 = 00011101
00010101 xor00011001 = 00001100
not00010101 = 11101010
(операнды и результат представлены в двоичной форме).
Операциии shl и shr имеют вид:
a shl n
a shr n
где n - целое положительное число, a - целое число.
a shl n представляет собой целое положительное, полученное из двоичного представления числа a сдвигом влево на n позиций. Добавляемые справа позиции заполняются нулями.
Читать дальше