2012年10月16日火曜日

開発環境

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

実習11-6.

コード(TextWrangler)

#include <stdio.h>

int main(){
  unsigned int ch, i, j, result;
  char line[100];
  int count;
  printf("数値を入力: ");
  fgets(line, sizeof(line), stdin);
  sscanf(line, "%d", &ch);
  count = 0;
  for(i = 1; i < 256; i = (i << 1)){
    if((ch & i) != 0){
      count++;
    }
  }
  result = 0;
  for(j = 7; count > 0 ; j--, count--){
    result |= (1 << j);
  }
  printf("全てのビットを左端までシフト: %d\n", result);
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
数値を入力: 86
全てのビットを左端までシフト: 240
$

メモ: 符号ビットを考えるとまだよく理解できてなくて分からなくなったので、とりあえず符号無し(unsigned)バージョンを完成してみた。

0 コメント:

コメントを投稿