|
YuOさん、あかまさん、いつもご回答ありがとうございます。
>桁数分書いたほうが分かりやすいかもしれませんが、intならintで
>処理系によって桁数が違うのでそれもまた難しいですね。
このホームページの元になる資料を作ったときに、intサイズ2バイト
のコンパイラを使っていたため、ホームページ自体が、intサイズ2バイト
を基準にしています。intサイズ4バイトが主流になった現在では、
4バイトに直した方がよいのかもしれませんが、初心者の方に、あくまでも
intサイズは処理系依存だということを知っていただいた方がいいと思い、
そのままにしてあります。
ですから、この演習の解答例では 0x0001 でマスクしています。
ただし、シフトは len = sizeof(dt) * CHAR_BIT;
for ( i = len - 1; i >= 0; i-- )
printf( "%u", ( dt >> i ) & 0x0001 );
のように、intサイズ4バイトでも対応できるようにしています。
もっとも、この解答例のページからもリンクしていますが、
http://www.bohyoh.com/CandCPP/FAQ/FAQ00018.html
にあるように、intサイズ12ビットのような特殊な処理系には対応して
いません。ただ、演習問題で、ここまで特殊な処理系のことを考える
必要はないと考えています。
|