2012年4月27日金曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) の11章(ビット演算)11.8(ビットマップグラフィックス)設問11-2を解いてみる。

設問11-2.

short intは16ビット、chは8ビットだから、一番眼のループは動作するけど2番目のループは符号の影響ビットの影響を受けて上手く動作しない。ということで、signed charではなくunsigned charにすればいい。

修正。

コード(TextWrangler)

#include <stdio.h>
int main(){
  short int i;
  unsigned char ch;
  
  for(i = 0x80; i!=0 ; i = (i >> 1)){
    printf("i is %x (%d)\n", i, i);
  }
  
  for(ch = 0x80; ch!= 0; ch = (ch >>1)){
    printf("ch is %x (%d)\n", ch, ch);
  }
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
i is 80 (128)
i is 40 (64)
i is 20 (32)
i is 10 (16)
i is 8 (8)
i is 4 (4)
i is 2 (2)
i is 1 (1)
ch is 80 (128)
ch is 40 (64)
ch is 20 (32)
ch is 10 (16)
ch is 8 (8)
ch is 4 (4)
ch is 2 (2)
ch is 1 (1)
$

0 コメント:

コメントを投稿