#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