Pascal-bit-operators

提供:Dev Guides
移動先:案内検索

パスカル-ビット演算子

Pascalでサポートされているビット演算子は、次の表にリストされています。 変数Aが60を保持し、変数Bが13を保持すると仮定します-

Operator Description Example
& Binary AND Operator copies a bit to the result if it exists in both operands. (A & B) will give 12, which is 0000 1100
Binary OR Operator copies a bit if it exists in either operand.
(A B) will give 61, which is 0011 1101 !
Binary OR Operator copies a bit if it exists in either operand. Its same as operator. (A ! B) will give 61, which is 0011 1101
~ Binary Ones Complement Operator is unary and has the effect of 'flipping' bits. (~A ) will give -61, which is 1100 0011 in 2’s complement form due to a signed binary number.
<< Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. A << 2 will give 240, which is 1111 0000
>> Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. A >> 2 will give 15, which is 0000 1111

Pascalの異なる実装はビットごとの演算子が異なることに注意してください。 ただし、ここで使用したコンパイラであるFree Pascalは、次のビット演算子をサポートしています-

Operators Operations
not Bitwise NOT
and Bitwise AND
or Bitwise OR
xor Bitwise exclusive OR
shl Bitwise shift left
shr Bitwise shift right
<< Bitwise shift left
>> Bitwise shift right

次の例は、概念を示しています-

program beBitwise;
var
a, b, c: integer;

begin
   a := 60; ( *60 = 0011 1100* )
   b := 13; ( *13 = 0000 1101* )
   c := 0;

   c := a and b;       ( *12 = 0000 1100* )
   writeln('Line 1 - Value of c is  ', c );

   c := a or b;       ( *61 = 0011 1101* )
   writeln('Line 2 - Value of c is  ', c );

   c := not a;          ( *-61 = 1100 0011* )
   writeln('Line 3 - Value of c is  ', c );

   c := a << 2;     ( *240 = 1111 0000* )
   writeln('Line 4 - Value of c is  ', c );

   c := a >> 2;     ( *15 = 0000 1111* )
   writeln('Line 5 - Value of c is  ', c );
end.

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is -61
Line 4 - Value of c is 240
Line 5 - Value of c is 15