お知らせ

プロフィール

yellooooow

Author:yellooooow
HPアドレス:http://mrgarita.net/
情報処理の先生をしています
くだらないことにあえて熱くなりたい
ほうです
気軽な文章をお楽しみください

最近の記事

カテゴリー

月別アーカイブ

タグで記事内を検索

人生  マラソン 挑戦 代行 デジカメ 感情  勝田マラソン プログラム 食べ物 仕事 生きる 食育 写真  家族  恐い 選択 彼女募集中 コーラ ストロー エンジニア ゴミ 先輩 10進数 2進数 変換 LarryWall  冗談 いつか Life クリスマス ソフトウエア開発試験 ドリフト コンピュータ 0と1 うそ 緒形拳 ストレス 予防 フィルム  ミステリー 病気 倉本聡 風のガーデン 親友 後悔 洋服 ファッション 10年後   関係 友だち 流行 想像 C言語 重複なし テニス 女子高生 お金持ち 王子様 並べ替え まっくろくろすけ  中国 現実 実家 さようなら 英会話 あいだみつを こわい話 信じる  自分 存在 迷い PIECE タイミング 言葉 ワンピース ルフィ ONE 一人 情報処理技術者試験  体質改善  独占 法律 オバマ 細胞 ねむようこ 自由 JavaScript ストップウォッチ 講演会 ひぐらしの鳴く頃に くだらないこと 一人暮らし  因果応報 偶然 必然 会話 Perl 卒業 真剣 尾崎豊 ガガガSP 自立 プー太郎 

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:
printf("1");
}
/* 1ビット右にシフトする */
bitCheck >>= 1;
}
printf("\n");

return 0;
}




他にも色々と答えはあると思います。
Larry Wallの言葉を借りれば、

There is more than one way to do it!(そのやり方は色々ある!)

です。

今年もありがとうございました。
来年また、よろしくお願いいたします。

〓武田〓

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURL:

FC2Ad

相続 FC2ブログ 会社設立