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

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

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

Perl
sub count_bits
{
    my ($x) = @_;
    $count = 0;
    while ($x)
    {
        $count++ if ($x & 1) ;
        $x >>= 1;
    }
    return $count;
}

sub int_bits
{
    return &count_bits(~0);
}

sub print_bits
{
    my ($x) = @_;
    for ($i = &int_bits - 1; $i >= 0; $i--)
    {
        print ((($x >> $i) & 1) ? '1' : '0');
    }

    print "\n";
}

$na = 12345;
$nb = 54321;

print "A       = ";  &print_bits($na);
print "NOT A   = ";  &print_bits(~$na);
print "\n";

print "A       = ";  &print_bits($na);
print "B       = ";  &print_bits($nb);
print "A AND B = ";  &print_bits($na & $nb);
print "\n";

print "A       = ";  &print_bits($na);
print "B       = ";  &print_bits($nb);
print "A OR B  = ";  &print_bits($na | $nb);
print "\n";

print "A       = ";  &print_bits($na);
print "B       = ";  &print_bits($nb);
print "A XOR B = ";  &print_bits($na ^ $nb);

実行結果

L:\>perl lesson_07_056.pl
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