こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

二進数

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

投稿日時 - 2017-11-16 16:56:38

QNo.9398081

困ってます

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

10進数16で割るというのがミソです。

10進数16は、2進数で10000ですから、これで割り切れる数がわかればいい・・・
10000に何を掛けても右4ビットは0ですよね?

よって、右4ビットが0000なら割り切れる、そうでなければ割り切れないと判断できます。

問いは、右4ビットが1000なので「割り切れない」。

投稿日時 - 2017-11-16 22:57:24

お礼

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

投稿日時 - 2017-11-17 10:34:08

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

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

この回答はあまりにひどい。

投稿日時 - 2017-11-17 01:36:25

ANo.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でないので割り切れないと解ります。

投稿日時 - 2017-11-16 22:12:46

ANo.4

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

投稿日時 - 2017-11-16 21:46:20

ANo.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個は落とせないので,割り切れません。

投稿日時 - 2017-11-16 19:01:19

ANo.2

 実は簡単です。

 1001|1010|1000 (9A8H)

 となるので、ビット列を右に4ビットシフトした時に、キャリーが1になるのを判定すればわかるが正解です。

 プログラムでは右シフトを4回実行して、キャリーが1回以上1になるかを判定することで、16で割り切れるかどうかを判断します。右シフト4回は16で割るのと同じ意味になります。一度もキャリーが1にならなければ16で割り切れます。

投稿日時 - 2017-11-16 17:17:59

ANo.1

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

投稿日時 - 2017-11-16 17:01:54

あなたにオススメの質問