No.3ベストアンサー
- 回答日時:
>ただ、pirntbitというのはなんでしょうか?
今回作った関数の名前です。
適当につけた名前なので検索しても出てこないですよ。
printbit(100); と呼び出せば10進数の100を2進数で表示します。
実際に動くプログラムを書いておきます。
----ここから----
#include <stdio.h>
void printbit(unsigned int n){
unsigned int bit; //ビット比較用
for(bit = 1 << sizeof(int)*8-1; bit > 0; bit >>= 1)
putchar((n & bit)?'1':'0');
putchar('\n');
}
void main(void){
printbit(100);
printbit(0xff);
printbit(1024);
printbit(-1);
printbit(-2);
}
----ここまで----
アルゴリズムの説明
私の環境では unsigned intは4バイト、つまり32ビットです。(intのサイズは環境により異なる場合があります。)
sizeof(int) これは4です。
sizeof(int)*8-1 これは31です。
1 << sizeof(int)*8-1 これは1を左に31ビットシフトしますので、2進数で表示すれば
100000000000000000000000 となります。最上位ビットが1でそれ以外0です。
bit = 1 << sizeof(int)*8-1 ここでbitに先ほどの最上位ビットだけ1の数を代入しています。
n & bit ビット演算のandをとります。nの最上位ビットが0なら0、1ならbitと同じ数になります。
つまりここでnの最上位ビットを調べているわけです。
putchar((n & bit)?'1':'0'); 条件演算子を使って、0(false)なら'0'を表示、0以外(true)なら'1'を表示しています。
bit >>= 1 1回目のループが終わると、bitを右に1ビットシフトします。bitは
010000000000000000000000 となります。上から2ビット目が1で、それ以外0です。
n & bit 2回目のループのこの部分は、上から2ビット目を調べることになります。
以下同様にループを繰り返し、最上位ビットから順に最下位ビットまで表示しています。
000000000000000000000001 最下位ビットを調べた後、bitを右にシフトすると0になります。
bitが0になればループは終了です。
こんな感じですが、ちょっと難しいかな。
No.2
- 回答日時:
10進数を2進数で表示するなら
#include <stdio.h>
void printbit(unsigned int n){
unsigned int bit; //ビット比較用
for(bit = 1 << sizeof(int)*8-1; bit > 0; bit >>= 1)
putchar((n & bit)?'1':'0');
putchar('\n');
}
こんな感じでどうでしょう?
この回答へのお礼
お礼日時:2006/11/29 17:39
早速のご返答有難うございます。
ただ、pirntbitというのはなんでしょうか?
googleや教科書を見ても詳しい説明がのってなくてわかりませんので
よろしかったら教えてください
No.1
- 回答日時:
以下のサイトにC言語でかかれているものがありました。
参考になればと・・。
C のかけら
http://www.mnet.ne.jp/~tnomura/C.html
ビット操作の例。10進->2進変換。
http://www.mnet.ne.jp/~tnomura/printbits.c
参考URL:http://www.mnet.ne.jp/~tnomura/printbits.c
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) vba キータッチまたはマウスクリックの確認 1 2023/08/23 19:02
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
- その他(プログラミング・Web制作) プログラミングの能力とアルゴリズムの能力は別物だと言われたのですが、これは本当ですか? プログラミン 1 2023/03/09 02:37
- その他(プログラミング・Web制作) プログラミング能力とアルゴリズム能力って違うのでしょうか? プログラミングの能力の一部にアルゴリズム 10 2023/03/31 14:34
- 数学 至急!研究の統計について 6 2023/07/12 00:38
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Perl perlのプログラミング 部分入れ替えの方法 1 2022/10/11 22:26
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- その他(プログラミング・Web制作) Pythonでプログラムを書いたのですが、このプログラムの動作説明がよくわからないので教えてください 2 2022/12/11 20:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カードシャッフルのブログラム...
-
c++ TCHARで文字化け
-
画像の拡大・縮小
-
C++で表を作成したいのです ...
-
再起呼び出しの回数をカウント...
-
whileとifを使い偶数を出すには
-
プログラミング
-
intとlongは同じ?
-
OpenCVによる4値化について
-
OpenGLの惑星プログラム
-
c言語プログラミングについて f...
-
迷路を脱出する経路探索プログ...
-
関数とビット列
-
クリックされた地点が2点の線分...
-
プログラミングに関して
-
コマンドプロンプトのウィンド...
-
10進法から2進法のCプロ
-
2の補数を計算するプログラム
-
C#メール受信から件名、本文を...
-
openCVの画像処理について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報