83 lines
4.1 KiB
HTML
83 lines
4.1 KiB
HTML
<html><head>
|
||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||
<param name="Keyword" value="and">
|
||
<param name="Keyword" value="or">
|
||
<param name="Keyword" value="not">
|
||
<param name="Keyword" value="xor">
|
||
<param name="Keyword" value="shl">
|
||
<param name="Keyword" value="shr">
|
||
</object>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../../default.css">
|
||
<style type="text/css">
|
||
.auto-style1 {
|
||
font-family: monospace;
|
||
font-size: 10pt;
|
||
color: #000080;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body><H1>Побитовые операции</H1>
|
||
<p>
|
||
К
|
||
<i>побитовым</i> относятся бинарные операции<i> </i><code><b>and</b></code>, <code><b>or</b></code>, <b><code>not</code></b>,
|
||
<b><code>xor</code></b>, <code><b>shl</b></code>, <code><b>shr</b></code>. Они
|
||
производят побитовые манипуляции с операндами целого типа. Результирующий тип
|
||
для <code><b>and</b></code>, <code><b>or</b></code>,
|
||
<b><code>xor</code></b> будет наименьшим целым, включающим все возможные значения обоих типов операндов,
|
||
для <code><b>shl</b></code>, <code><b>shr</b></code> - результирующий
|
||
тип будет как минимум integer, а для 64-битных целых - совпадать с типом левого операнда, для <code><b>not</b></code>
|
||
- будет как минимум integer, а для 64-битных целых - совпадать с типом операнда.</p>
|
||
<p>
|
||
Побитовые операции осуществляются следующим образом: с каждым битом (0
|
||
принимается за False, 1 - за True)
|
||
производится соответствующая логическая операция. Например:</p>
|
||
<blockquote>
|
||
<p><code>00010101 <b>and</b> 00011001 = 00010001<br>
|
||
00010101 <b>or</b> 00011001 = 00011101<br>
|
||
00010101 <b>xor</b> 00011001 = 00001100<br>
|
||
<b>not</b> 00010101 = 11101010</code></p>
|
||
</blockquote>
|
||
<p>
|
||
(операнды и результат представлены в двоичной форме).</p>
|
||
<p>
|
||
Операции not, and, or и xor предназначены для работы с беззнаковыми целыми.
|
||
Знаковые целые трактуются как беззнаковые, с этой точки зрения применеие этих
|
||
операций к знаковым целым лишено смысла.</p>
|
||
<p>
|
||
Операциии <strong><span class="auto-style1">shl</span></strong> и <strong>
|
||
<span class="auto-style1">shr</span></strong> имеют вид:</p>
|
||
<blockquote>
|
||
<p><code>
|
||
a <strong>shl</strong> n <br>a <strong>shr</strong> n
|
||
</code></p>
|
||
</blockquote>
|
||
<p>
|
||
где n - целое положительное число, a - целое число.</p>
|
||
<p>
|
||
<code>
|
||
a <strong>shl</strong> n</code> представляет собой целое положительное, полученное из двоичного
|
||
представления числа a сдвигом влево на n позиций. Добавляемые справа позиции
|
||
заполняются нулями. </p>
|
||
<p>
|
||
<code>
|
||
a <strong>shr</strong> n</code> представляет собой целое положительное, полученное из двоичного
|
||
представления числа a сдвигом вправо на n позиций.</p>
|
||
<p>
|
||
Например:</p>
|
||
<blockquote>
|
||
<p><code>
|
||
3 <strong>shl</strong> 2 = 12 <br>12 <strong>shr</strong> 2 = 3</code></p>
|
||
</blockquote>
|
||
<p>
|
||
поскольку 3=11<sub>2</sub>, после сдвига влево на 2 позиции 11<sub>2</sub> преобразуется в 1100<sub>2</sub>=12, а
|
||
12=1100<sub>2</sub> после сдвига вправо на 2 позиции преобразуется в 11<sub>2</sub>=3.</p>
|
||
<p>
|
||
Для знаковых целых операции shl и shr сохраняют знак.</p>
|
||
<p>
|
||
</p>
|
||
<p>
|
||
</p>
|
||
|
||
</body></html> |