• ベストアンサー

二進数

2進数100110101000は10進数16で割り切ることができるか。 という問題ですが、2進数を10進数に変換することなく、解く方法はありますか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#231223
noname#231223
回答No.6

10進数16で割るというのがミソです。 10進数16は、2進数で10000ですから、これで割り切れる数がわかればいい・・・ 10000に何を掛けても右4ビットは0ですよね? よって、右4ビットが0000なら割り切れる、そうでなければ割り切れないと判断できます。 問いは、右4ビットが1000なので「割り切れない」。

Raracccc
質問者

お礼

皆さま沢山の回答ありがとうございました。 一つ一つ大事に読ませて頂きました。 大切なお時間頂き感謝いたします。

その他の回答 (6)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.7

>こんなかんたんなはなしはありませんよ。 >16というのは2進で1000です。これで割り切れるということは、 >1000というパタンが繰り返されているものしかありません。 >100010001000・・・のようなものでない限り1000で割り切れるわけがないのです。 この回答はあまりにひどい。

回答No.5

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)
回答No.4

こんなかんたんなはなしはありませんよ。 16というのは2進で1000です。これで割り切れるということは、1000というパタンが繰り返されているものしかありません。 100010001000・・・のようなものでない限り1000で割り切れるわけがないのです。

  • f272
  • ベストアンサー率46% (8477/18147)
回答No.3

例えば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)
回答No.2

 実は簡単です。  1001|1010|1000 (9A8H)  となるので、ビット列を右に4ビットシフトした時に、キャリーが1になるのを判定すればわかるが正解です。  プログラムでは右シフトを4回実行して、キャリーが1回以上1になるかを判定することで、16で割り切れるかどうかを判断します。右シフト4回は16で割るのと同じ意味になります。一度もキャリーが1にならなければ16で割り切れます。

回答No.1

  100110101000 ***********↑ 右から4番目は10進数で「8」です 5番目が「16」でそれより左は16の倍数だから16で割れますが、8は16で割れない だから、答えは「割り切れない」  

関連するQ&A