Shammer's Philosophy

My private adversaria

C言語で2進数を表示させる・改

C言語で2進数を表示させる - Shammerismの内容を少し変更。左の0は表示させないようにしたのと、引数をlong型に変更。

void print_as_b_value(const long value){
  unsigned long bit = (1L << (sizeof(long) * 8 - 1));
  int i = 0;
  int x = 0;
  for( ; bit != 0 ; bit >>= 1, ++i ){
    if( i != 0 && i % 4 == 0 && x ){
      putchar('.');
    }
    if( value & bit ){
      putchar('1');
      x = 1;
    }
    else {
      if ( x ) putchar('0');
    }
  }
  printf("\n");
}

以前のバージョンは以下のように不要な0が表示されるようになっていたが、

# ./a.out 1
0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0001
#

今回のは以下のように不要な0を表示させなくした。

# ./a.out 1
1
# 

これと16進数を10進数に戻す関数 - Shammerismを組み合わせて、16進数を2進数で表示させるようなものを作りたい。