- ベストアンサー
二進数
2進数100110101000は10進数16で割り切ることができるか。 という問題ですが、2進数を10進数に変換することなく、解く方法はありますか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
10進数16で割るというのがミソです。 10進数16は、2進数で10000ですから、これで割り切れる数がわかればいい・・・ 10000に何を掛けても右4ビットは0ですよね? よって、右4ビットが0000なら割り切れる、そうでなければ割り切れないと判断できます。 問いは、右4ビットが1000なので「割り切れない」。
その他の回答 (6)
- asuncion
- ベストアンサー率33% (2127/6289)
>こんなかんたんなはなしはありませんよ。 >16というのは2進で1000です。これで割り切れるということは、 >1000というパタンが繰り返されているものしかありません。 >100010001000・・・のようなものでない限り1000で割り切れるわけがないのです。 この回答はあまりにひどい。
- nan93850673
- ベストアンサー率32% (179/553)
16は2の4乗ですね。 元の値を2で4回割ってやれば解ります。 二進数なので、1回2で割ると小数点が一つ左へ動くので、 100110101000÷2=10011010100.0 10011010100.0÷2=1001101010.00 1001101010.00÷2=100110101.000 100110101,000÷2=10011010,1000 4回割った結果、少数以下が0でないので割り切れないと解ります。
- hue2011
- ベストアンサー率38% (2801/7249)
こんなかんたんなはなしはありませんよ。 16というのは2進で1000です。これで割り切れるということは、1000というパタンが繰り返されているものしかありません。 100010001000・・・のようなものでない限り1000で割り切れるわけがないのです。
- f272
- ベストアンサー率46% (8477/18147)
例えば10進数2,304,000は10進数10,000で割り切れるかと聞かれたら,10進数2,304,000の右側から0を4個落とせるかどうかを考えますよね。これと同じです。 2進数100110101000を10進数16の場合には,このままではよくわかりませんから,2進数を10進数に変換するか,10進数を2進数に変換する必要があります。 10進数16を2進数10000に変換する方が簡単ですから,こちらで考えます。 2進数1001 1010 1000は2進数1 0000で割り切れるかは,2進数1001 1010 1000の右側から0を4個落とせるかどうかを考えます。答えは4個は落とせないので,割り切れません。
- SPROCKETER
- ベストアンサー率26% (2126/7992)
実は簡単です。 1001|1010|1000 (9A8H) となるので、ビット列を右に4ビットシフトした時に、キャリーが1になるのを判定すればわかるが正解です。 プログラムでは右シフトを4回実行して、キャリーが1回以上1になるかを判定することで、16で割り切れるかどうかを判断します。右シフト4回は16で割るのと同じ意味になります。一度もキャリーが1にならなければ16で割り切れます。
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
100110101000 ***********↑ 右から4番目は10進数で「8」です 5番目が「16」でそれより左は16の倍数だから16で割れますが、8は16で割れない だから、答えは「割り切れない」
お礼
皆さま沢山の回答ありがとうございました。 一つ一つ大事に読ませて頂きました。 大切なお時間頂き感謝いたします。