Изменения

Перейти к: навигация, поиск

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

13 байт убрано, 23:44, 20 марта 2016
Определение знака числа
Пусть дано число <tex>x</tex>. Поскольку при сдвиге вправо на освобождающиеся позиции устанавливается бит знака, знак числа <tex>x</tex> можно определить, выполнив сдвиг вправо на всю длину переменной:
<code>
<font color '''int32''' getSign(x: '''int32''') '''if''' x != green>// n {{---}} разрядность числа</font>0: mask = 1 '''else''': mask = 0
'''if''' x != 0 mask = 1 '''elsereturn''' mask = 0 sign = mask | (x >> (n - 1)31) <font color = green>// результатом будет -1, 0, или +1 // для отрицательного, равного нулю и положительного числа x соответственно</font>
</code>
Используя побитовые операции можно также узнать, различны ли знаки двух переменных <tex>x</tex> и <tex>y</tex>. Если числа имеют различный знак, то результат операции XOR, произведенной над их знаковыми битами, будет единицей. Поэтому неравенство <tex>(x \oplus y) < 0</tex> будет верно в том случае, если числа <tex>x</tex> и <tex>y</tex> разного знака.
276
правок

Навигация