10進数を2進数に変換するプログラム

今年の最後はプログラムです。

【問題】 入力した10進数を2進数に変換して表示するプログラムを作成せよ。

C言語の授業の期末テストで出した問題です
解答例を2つ考えました。
1つ目は情報処理の勉強で習ったとおり元の数を2で割ってあまりを求めていき、最後に1になるまで繰り返すものです。

/* 10進数を2進数に変換する(1) */ #include <stdio.h> #include <stdlib.h> int main(void) { int i, n; int bits[1024]; int digit, amari; printf("10進数: "); scanf("%d", &digit); n=0; while(digit>=1){ amari = digit % 2; /* 配列変数に順番に代入して */ bits[n++] = amari; digit = digit / 2; } /* 逆順に表示している */ for(i=n-1; i>=0; i--){ printf("%d", bits[i]); } printf("\n"); return 0; }

2つ目はコンピュータの得意なビット演算を用いた方法です。
int型変数のサイズを4バイトとして考えています。

/*
10進数を2進数に変換する(2)
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
unsigned int digit;
/* 1000 0000 0000 0000 0000 0000 0000 0000 */
unsigned int bitCheck = 0x80000000;
printf("10進数: ");
scanf("%d", &digit);
/* int型が4バイトであるため */
for(i=0; i<32; i++){
switch(digit & bitCheck){
case 0:
printf("0");
break;
default

コメント

タイトルとURLをコピーしました