bit_operatorプロジェクト


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

bit_operator.c

/*------------------------------------------------------------------------------
 * Title: bit_operator
 * Project: bit_operator
 * Source: bit_operator.c
 * Author: B.G
 * Group: B.G
 * Created: 13:43 2009/11/07
 * Last Modified: 13:43 2009/11/07
 * ---------------------------------------------------------------------------*/
 
/* ヘッダファイルのインクルード */
#include <stdio.h> /* stdio.hのインクルード */
 
/* main関数 */
int main(void){
 
  /* 変数の宣言 */
  unsigned char result_or; /* 2つのビット値の論理和(OR)の結果を格納するunsigned char型変数result_or */
  unsigned char result_and; /* 2つのビット値の論理積(AND)の結果を格納するunsigned char型変数result_and */
  unsigned char result_not; /* ビット値の否定(NOT)の結果を格納するunsigned char型変数result_not */
  unsigned char result_xor; /* 2つのビット値の排他的論理和(XOR)の結果を格納するunsigned char型変数result_xor */
  unsigned char result_rshift; /* ビット値の右シフト(RSHIFT)の結果を格納するunsigned char型変数result_rshift */
  unsigned char result_lshift; /* ビット値の左シフト(LSHIFT)の結果を格納するunsigned char型変数result_lshift */
  unsigned char b1; /* 値1を格納するunsigned char型変数b1 */
  unsigned char b2; /* 値2を格納するunsigned char型変数b2 */
 
  /* 値の初期化 */
  b1 = 5; /* b1に5をセットする(5 = 00000101) */
  b2 = 3; /* b2に3をセットする(3 = 00000011) */
 
  /* 論理和 */
  result_or = b1 | b2; /* (00000101 | 00000011) = (00000111) */
  printf("5(00000101) | 3(00000011) = %u(= 00000111)\n", result_or); /* 結果をprintfで表示 */
 
  /* 論理積 */
  result_and = b1 & b2; /* (00000101 & 00000011) = (00000001) */
  printf("5(00000101) & 3(00000011) = %u(= 00000001)\n", result_and); /* 結果をprintfで表示 */
 
  /* 否定 */
  result_not = ~b1; /* (~00000101) = (11111010) */
  printf("~5(00000101) = %u(= 11111010)\n", result_not); /* 結果をprintfで表示 */
 
  /* 排他的論理和 */
  result_xor = b1 ^ b2; /* (00000101 ^ 00000011) = (00000110) */
  printf("5(00000101) ^ 3(00000011) = %u(= 00000110)\n", result_xor); /* 結果をprintfで表示 */
 
  /* 右シフト(右に2つ論理シフト) */
  result_rshift = b1 >> 2; /* (00000101 >> 2) = (00000001) */
  printf("5(00000101) >> 2 = %u(= 00000001)\n", result_rshift); /* 結果をprintfで表示 */
 
  /* 左シフト(左に2つ論理シフト) */
  result_lshift = b1 << 2; /* (00000101 << 2) = (00010100) */
  printf("5(00000101) << 2 = %u(= 00010100)\n", result_lshift); /* 結果をprintfで表示 */
 
  /* プログラムの終了 */
  return 0;
 
}