2012年7月14日土曜日

開発環境

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

実習11-5.

コード(TextWrangler)

#include <stdio.h>

int main(){
  long int a;
  char line[100];
  long int bit;
  int i;
  while(1){
    printf("32ビットの整数型(long int)を入力: ");
    fgets(line,sizeof(line),stdin);
    sscanf(line,"%ld",&a);
    if(a >= 0){
      printf("0");
    } else {
      printf("1");
    }
    for(bit = (1 << 30); bit >= (1 << 28); bit = (bit >> 1)){
      if((a & bit) == bit){
        printf("1");
      } else {
        printf("0");
      }
    }
    printf(" ");
    for( i = 1 ; bit > 0 ; i++, bit = (bit >> 1)){
      if((a & bit) == bit){
        printf("1");
      } else {
        printf("0");
      }
      if(i % 4 == 0){
        printf(" ");
      }
    }
    printf("\n");
  }
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
32ビットの整数型(long int)を入力: 1
0000 0000 0000 0000 0000 0000 0000 0001 
32ビットの整数型(long int)を入力: 2
0000 0000 0000 0000 0000 0000 0000 0010 
32ビットの整数型(long int)を入力: 3
0000 0000 0000 0000 0000 0000 0000 0011 
32ビットの整数型(long int)を入力: 4
0000 0000 0000 0000 0000 0000 0000 0100 
32ビットの整数型(long int)を入力: 5
0000 0000 0000 0000 0000 0000 0000 0101 
32ビットの整数型(long int)を入力: 16
0000 0000 0000 0000 0000 0000 0001 0000 
32ビットの整数型(long int)を入力: -1
1111 1111 1111 1111 1111 1111 1111 1111 
32ビットの整数型(long int)を入力: -2
1111 1111 1111 1111 1111 1111 1111 1110 
32ビットの整数型(long int)を入力: -3
1111 1111 1111 1111 1111 1111 1111 1101 
32ビットの整数型(long int)を入力: -4
1111 1111 1111 1111 1111 1111 1111 1100 
32ビットの整数型(long int)を入力: -5
1111 1111 1111 1111 1111 1111 1111 1011 
32ビットの整数型(long int)を入力: -6
1111 1111 1111 1111 1111 1111 1111 1010 
32ビットの整数型(long int)を入力: -7
1111 1111 1111 1111 1111 1111 1111 1001 
32ビットの整数型(long int)を入力: -8 
1111 1111 1111 1111 1111 1111 1111 1000 
32ビットの整数型(long int)を入力: -9
1111 1111 1111 1111 1111 1111 1111 0111
32ビットの整数型(long int)を入力: -10
1111 1111 1111 1111 1111 1111 1111 0110 
32ビットの整数型(long int)を入力: -16
1111 1111 1111 1111 1111 1111 1111 0000 
32ビットの整数型(long int)を入力: -17
1111 1111 1111 1111 1111 1111 1110 1111 
32ビットの整数型(long int)を入力: ^C
$

0 コメント:

コメントを投稿