#include <stdio.h> #include <limits.h> int main( void ) { unsigned int x, y, z; printf( "0〜%uの整数を2つ入力\n", UINT_MAX ); scanf( "%u%u", &x, &y ); z = x & y; printf( "%u(%#x) AND %u(%#x) = %#x\n", x, x, y, y, z ); z = x | y; printf( "%u(%#x) OR %u(%#x) = %#x\n", x, x, y, y, z ); z = x ^ y; printf( "%u(%#x) XOR %u(%#x) = %#x\n", x, x, y, y, z ); return 0; } ※ %u は、unsigned型に対する書式指定文字列です。 UINT_MAX は limits.h の中でマクロ定義され、unsigned int型の最大値を表します。
#include <stdio.h> #include <limits.h> void bit_disp( unsigned int dt ); int main( void ) { unsigned int a; printf( "0〜%uの整数を入力(終了条件:Ctrl+Z)\n", UINT_MAX ); while( scanf( "%u", &a ) != EOF ){ bit_disp( a ); } return 0; } /*** ビット表示関数 ***/ void bit_disp( unsigned int dt ) { int i, len; /* unsigned int のビット数をlenにセット (注)*/ len = sizeof(dt) * CHAR_BIT; printf( "%#x ---> ", dt ); for ( i = len - 1; i >= 0; i-- ){ /* ビットの表示 */ printf( "%u", ( dt >> i ) & 0x0001 ); } printf( "\n" ); } (注) CHAR_BIT は limits.h の中でマクロ定義され、1バイトのビット数を表します。 ただし、この len の求め方は特殊な処理系では正常に取得できません。 詳しくはhttp://www.bohyoh.com/CandCPP/FAQ/FAQ00018.htmlをご覧ください。
▼戻る▼
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved