c
1#include <stdio.h> 2 3int main(void) 4{ 5 int binary[16]; 6 int value; 7 int i; 8 9 scanf("%d", &value); 10 11 for (i=15; i>=0; i--) { 12 binary[i] = value % 2; 13 value /= 2; 14 } 15 16 for (i=0; i<16; i++) { 17 printf("%d", binary[i]); 18 } 19 20} 21
このコードは入力された数字を2進数に変換するのですが、この部分がわかりません。
c
1for (i=15; i>=0; i--) { 2 binary[i] = value % 2; 3 value /= 2; 4}
挙動はわかるのですが、なぜ「数字を2で割った余剰を求め、2で割る」を繰り返すと2進数に変換されるのでしょうか?
よろしくお願いいたします。
2で割った余りは最下位ビットの値だからです。
2で割った商は1ビット右シフトさせるのと同じだからです。
回答3件
あなたの回答
tips
プレビュー