2018-08-02 22:04:49 +03:00
|
|
|
|
<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>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<body><H1>Побитовые операции</H1>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
К
|
|
|
|
|
|
<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>,
|
2026-01-29 21:38:42 +03:00
|
|
|
|
<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>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
Побитовые операции осуществляются следующим образом: с каждым битом (0
|
|
|
|
|
|
принимается за False, 1 - за True)
|
|
|
|
|
|
производится соответствующая логическая операция. Например:</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<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>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
(операнды и результат представлены в двоичной форме).</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
Операции not, and, or и xor предназначены для работы с беззнаковыми целыми.
|
|
|
|
|
|
Знаковые целые трактуются как беззнаковые, с этой точки зрения применеие этих
|
|
|
|
|
|
операций к знаковым целым лишено смысла.</p>
|
2024-04-14 20:15:34 +03:00
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
Операциии <strong><span class="auto-style1">shl</span></strong> и <strong>
|
|
|
|
|
|
<span class="auto-style1">shr</span></strong> имеют вид:</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<blockquote>
|
|
|
|
|
|
<p><code>
|
|
|
|
|
|
a <strong>shl</strong> n <br>a <strong>shr</strong> n
|
|
|
|
|
|
</code></p>
|
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
где n - целое положительное число, a - целое число.</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p>
|
|
|
|
|
|
<code>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
a <strong>shl</strong> n</code> представляет собой целое положительное, полученное из двоичного
|
|
|
|
|
|
представления числа a сдвигом влево на n позиций. Добавляемые справа позиции
|
|
|
|
|
|
заполняются нулями. </p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p>
|
|
|
|
|
|
<code>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
a <strong>shr</strong> n</code> представляет собой целое положительное, полученное из двоичного
|
|
|
|
|
|
представления числа a сдвигом вправо на n позиций.</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
Например:</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<blockquote>
|
|
|
|
|
|
<p><code>
|
|
|
|
|
|
3 <strong>shl</strong> 2 = 12 <br>12 <strong>shr</strong> 2 = 3</code></p>
|
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
поскольку 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>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
Для знаковых целых операции shl и shr сохраняют знак.</p>
|
2024-04-14 20:15:34 +03:00
|
|
|
|
<p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
</body></html>
|