ForNext
Only Do What Only You Can Do
056. 論理和・論理積・排他的論理和
VBScript
JScript
Perl
更新日 : 2010.10.18
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
PHP
更新日 : 2010.11.03
<?php function count_bits($x) { $count = 0; while ($x) { if ($x & 1) $count++; $x = ($x >> 1) & ~(~0 << (PHP_INT_SIZE * 8) - 1); } return $count; } function int_bits() { return count_bits(~0); return count_bits(~0); } function print_bits($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:\>php lesson_07_056.php 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
Python
更新日 : 2010.11.17
import sys def count_bits(x): count = 0 while (x != 0): if (x & 1 != 0): count +=1 x = (x >> 1) & ~(~0 << (sys.getsizeof(x) * 8)); return count def int_bits(): return count_bits(~0) def print_bits(x): for i in range(int_bits() - 1, -1, -1): if ((x >> i) & 1) != 0: sys.stdout.write("1") else: sys.stdout.write("0") print na = 12345 nb = 54321 sys.stdout.write("A = "); print_bits(na) sys.stdout.write("NOT A = "); print_bits(~na) print sys.stdout.write("A = "); print_bits(na) sys.stdout.write("B = "); print_bits(nb) sys.stdout.write("A AND B = "); print_bits(na & nb) print sys.stdout.write("A = "); print_bits(na) sys.stdout.write("B = "); print_bits(nb) sys.stdout.write("A OR B = "); print_bits(na | nb) print sys.stdout.write("A = "); print_bits(na) sys.stdout.write("B = "); print_bits(nb) sys.stdout.write("A XOR B = "); print_bits(na ^ nb)
N:\>python lesson_07_056.py A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001 NOT A = 1111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111000110 A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001 B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001101010000110001 A AND B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110001 A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001 B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001101010000110001 A OR B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001111010000111001 A = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000111001 B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001101010000110001 A XOR B = 0000000000000000000000000000000000000000000000000000000000000000000000000000000001110010000001000
Ruby
更新日 : 2010.11.01
def count_bits(x) count = 0 while (x != 0) count += 1 if (x & 1 != 0) x = (x >> 1) & ~(~0 << (x.size * 8)) end return count end def int_bits return count_bits(~0) end def print_bits(x) (int_bits - 1).downto(0) do |i| print(((x >> i) & 1) != 0 ? '1' : '0') end puts "" end na = 12345 nb = 54321 print "A = "; print_bits(na) print "NOT A = "; print_bits(~na) puts "" print "A = "; print_bits(na) print "B = "; print_bits(nb) print "A AND B = "; print_bits(na & nb) puts "" print "A = "; print_bits(na) print "B = "; print_bits(nb) print "A OR B = "; print_bits(na | nb) puts "" print "A = "; print_bits(na) print "B = "; print_bits(nb) print "A XOR B = "; print_bits(na ^ nb)
L:\>ruby l:\lesson_07_056.rb A = 000000000000000000011000000111001 NOT A = 111111111111111111100111111000110 A = 000000000000000000011000000111001 B = 000000000000000001101010000110001 A AND B = 000000000000000000001000000110001 A = 000000000000000000011000000111001 B = 000000000000000001101010000110001 A OR B = 000000000000000001111010000111001 A = 000000000000000000011000000111001 B = 000000000000000001101010000110001 A XOR B = 000000000000000001110010000001000
PowerShell
Scala
F#
C
更新日 : 2010.10.08
#include <stdio.h> int count_bits(unsigned x) { int count = 0; while (x) { if (x & 1u) count++; x >>= 1; } return count; } int int_bits(void) { return count_bits(~0u); } void print_bits(unsigned x) { int i; for (i = int_bits() - 1; i >= 0; i--) putchar(((x >> i) & 1u) ? '1' : '0'); putchar('\n'); } int main(int argc, char* argv[]) { unsigned na = 12345; unsigned nb = 54321; printf("A = "); print_bits(na); printf("NOT A = "); print_bits(~na); putchar('\n'); printf("A = "); print_bits(na); printf("B = "); print_bits(nb); printf("A AND B = "); print_bits(na & nb); putchar('\n'); printf("A = "); print_bits(na); printf("B = "); print_bits(nb); printf("A OR B = "); print_bits(na | nb); putchar('\n'); printf("A = "); print_bits(na); printf("B = "); print_bits(nb); printf("A XOR B = "); print_bits(na ^ nb); return 0; }
R:\>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
C++
C++Builder
VC++
C#
Java
更新日 : 2010.11.05
class Lesson056 { public static void main(String[] args) { int na = 12345; int nb = 54321; System.out.printf("A = "); print_bits(na); System.out.printf("NOT A = "); print_bits(~na); System.out.print('\n'); System.out.printf("A = "); print_bits(na); System.out.printf("B = "); print_bits(nb); System.out.printf("A AND B = "); print_bits(na & nb); System.out.print('\n'); System.out.printf("A = "); print_bits(na); System.out.printf("B = "); print_bits(nb); System.out.printf("A OR B = "); print_bits(na | nb); System.out.print('\n'); System.out.printf("A = "); print_bits(na); System.out.printf("B = "); print_bits(nb); System.out.printf("A XOR B = "); print_bits(na ^ nb); } static void print_bits(int x) { int i; for (i = int_bits() - 1; i >= 0; i--) System.out.print(((x >>> i) & 1) != 0 ? '1' : '0'); System.out.print('\n'); } static int int_bits() { return count_bits(~0); } static int count_bits(int x) { int count = 0; while (x != 0) { if ((x & 1) != 0) count++; x >>>= 1; } return count; } }
L:\>java Lesson056 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
Objective-C
D
VB
VB.NET
Delphi
更新日 : 2010.09.24
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