お知らせ

プロフィール

yellooooow

Author:yellooooow
HPアドレス:http://mrgarita.net/
情報処理の先生をしています
くだらないことにあえて熱くなりたい
ほうです。ワンピース好きです
コメント大歓迎です

最近の記事

カテゴリー

月別アーカイブ

タグで記事内を検索

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

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ブログ 会社設立