2012年7月15日日曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の11章(ビット演算)11.10(プログラミング実習)実習11-6を解いてみる。

実習11-6.

コード(TextWrangler)

#include <stdio.h>

int main(){
  char a;
  char b;
  int n;
  int bit;
  int count;
  char line[100];
  while(1){
    printf("数値を入力: ");
    fgets(line,sizeof(line),stdin);
    sscanf(line,"%x",&n);
    a = n;
    for(bit = 1; bit <= (1 << 7); bit = (bit << 1)){
      if((a & bit) == bit){
        count += 1;
      }
    }
    b = 0;
    for(bit = (1 << 7); count > 0; count--,bit = (bit >> 1)){
      b |= bit;
    }
    printf("数値の全てのビットを左端にシフト: %d\n", b);
  }
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
数値を入力: 0x56
数値の全てのビットを左端にシフト: -16
数値を入力: 0x57
数値の全てのビットを左端にシフト: -8
数値を入力: 0x58
数値の全てのビットを左端にシフト: -32
数値を入力: 0x59
数値の全てのビットを左端にシフト: -16
数値を入力: 0x0
数値の全てのビットを左端にシフト: 0
数値を入力: 0x1
数値の全てのビットを左端にシフト: -128
数値を入力: 0x2
数値の全てのビットを左端にシフト: -128
数値を入力: 0x3
数値の全てのビットを左端にシフト: -64
数値を入力: 0x4
数値の全てのビットを左端にシフト: -128
数値を入力: 0x5
数値の全てのビットを左端にシフト: -64
数値を入力: ^C
$

0 コメント:

コメントを投稿