論理和・論理積・排他的論理和

明解C言語 入門編 > 7. 基本型 >

論理和論理積排他的論理和

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

function count_bits(x:Longword):Integer;
var
count:Integer;
begin
count := 0;
while (x <> 0) do
begin
if x and 1 <> 0 then inc(count);
x := x shr 1;
end;
result := count;
end;

function int_bits():Integer;
begin
result := count_bits(Longword(not 0));
end;

procedure print_bits(x:Longword);
var
i: Integer;
begin
for i := int_bits() - 1 downto 0 do
begin
if x shr i and 1 <> 0 then
write('1')
else
write('0');
end;

writeln('');
end;

procedure main();
var
na, nb:Longword;
begin
na := 12345;
nb := 54321;
write('A = '); print_bits(na);
write('NOT A = '); print_bits(not na);
writeln('');

write('A = '); print_bits(na);
write('B = '); print_bits(nb);
write('A AND B = '); print_bits(na and nb);
writeln('');

write('A = '); print_bits(na);
write('B = '); print_bits(nb);
write('A OR B = '); print_bits(na or nb);
writeln('');

write('A = '); print_bits(na);
write('B = '); print_bits(nb);
write('A XOR B = '); print_bits(na xor nb);
end;

begin
main;
end.

実行結果

S:\>lesson056\project1.exe
A = 00000000000000000011000000111001
NOT A = 11111111111111111100111111000110

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A AND B = 00000000000000000001000000110001

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A OR B = 00000000000000001111010000111001

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A XOR B = 00000000000000001110010000001000