電子書籍の厳選無料作品が豊富!

50を2進数にすると00110010なのですが

何回計算しても11001110になってしまいます。

50を2で割って下から数字を出すと先頭が1になるのですが何が間違えているのか分かりません。
解説お願いします。

A 回答 (7件)

たぶん学校で習った方法ではないと思うけど、50ぐらいの小さい数字だと、結構プロのコンピュータ技術者は記憶と引き算を頼りに求めています。

つまり、2のべき乗の数値を13乗ぐらいまで覚えていて、

2の13乗=8192
2の12乗=4096
2の11乗=2048
2の10乗=1024
2の9乗=512
2の8乗=256
2の7乗=128
2の6乗=64
2の5乗=32
2の4乗=16
2の3乗=8
2の2乗=4
2の1乗=2
2の0乗=1

50は64~32にあるので6桁目1、50-32=18
18は16~32にあるので5桁目1、18-16=2
2は2の1乗なので、4, 3桁目は0、2桁目は1、2-2=0
なので1桁目は0

ぐらいは数秒もあれば求められます(電卓を出して計算させるよりもたいてい速い)。

ちなみにネットワーク技術者の場合、ネットワーク部やホスト部が何かを割り出す際、わざわざ2進数に直してからネットマスクにかかる部分とそうでない部分を分けたりはしておらず、/32~/24ぐらいまではネットマスクの数値を記憶しています(255, 254, 252, 248, 240, 224, 192, 128, 0)。これだけ覚えておけば、引き算さえできればほぼ瞬時にどのセグメントに属するIPアドレスなのかを求められます。

「コンピューター・テクノロジー」のカテゴリなので、学校で習う算数の問題のおりこうさん向けの解法ではなく、実践的な方法として紹介しました。
    • good
    • 1
この回答へのお礼

ありがとうございます

お礼日時:2025/02/24 18:18

何回やっても合わないという人ほど、その自分が何回もやった過程を、質問内に書かない人が多いんですよね。



だから、どこが間違っていたのかを誰も指摘出来ないんですよ。
書くのが面倒くさいと思っておられるのかな?

皆さんの回答見ても、詳しく回答を書く方が遥かに長文になるんだから、質問者が面倒くさがってる場合じゃないと思いますけど。

自分の考えの過程を示して、間違ってるところを指定してもらった方が、より良く理解出来るようになると思いますので、そのように質問された方がいいのではないでしょうか?
    • good
    • 4
この回答へのお礼

そうですね。

お礼日時:2025/02/24 18:18

コレは何かの宿題?どんな計算したのかな?


50は10進数で良いんだよね?

50÷2=25・・・0
25÷2=12・・・1
12÷2=06・・・0
06÷2=03・・・0
03÷2=01・・・1
01÷2=00・・・1
余りを下から上に向かって拾い並べる。
110010
ただし8bitで書けと言われたら、
00110010
になる。

と言うよりも普通に16進数に変換してから2進数に直す方が暗算しやすいけど何故に2で割りたがるのかな?
0〜15の10進16進2進対比は丸暗記だよ。
50÷16=3・・・2
16進数で32
2進数で3=0011、2=0010
だから、00110010
    • good
    • 0
この回答へのお礼

ありがとうございます
まだ16進数はやってなくて余計混乱しちゃうそうなので2進数10進数のみでやってます

お礼日時:2025/02/24 18:19

> 50を2で割って下から数字を出すと



55でやってみると、

55÷2=27あまり1
なので、下から1番目の数字は1

27÷2=13あまり1
なので、下から2番目の数字は1

13÷2=6あまり1
なので、下から3番目の数字は1

6÷2=3あまり0
なので、下から4番目の数字は0

3÷2=1あまり1
なので、下から5番目の数字は1

1÷2=0あまり1
なので、下から6番目の数字は1

0÷2=0あまり0
なので、下から7番目の数字は0

0÷2=0あまり0
なので、下から8番目の数字は0

並べると、
00110111

--
> 何が間違えているのか

上と同じように計算したの書いてみてくれたら、指摘できるかも。
    • good
    • 0
この回答へのお礼

ありがとうございます
余りの数を間違えていました。

お礼日時:2025/02/24 18:20

あっ、因みに「11001110」は10進数に改めると「206」、


16進数なら「ce」になったよ。

あ゛ーーーッ、めんどくさかたぁ ”#(%&()
    • good
    • 0
この回答へのお礼

ありがとうございます
16進数はまだ分かりません

お礼日時:2025/02/24 18:19

計算は添付図のようになるので、何かを足したりしているのでは?

「50を2進数にすると00110010なの」の回答画像2
    • good
    • 0
この回答へのお礼

助かりました

お礼日時:2025/02/24 18:20

うん、なんとなく理解はしているんだけど、なんとなくでしかないんだね。



10進数を2進数に変換するには、変換先の基数である「2」で割り算します。
この事例の場合の基数は「50」ですよね。

それを割り算の商が0になるまで計算したあと、求めた余りを右から順に並べると、元の10進数を2進数で表すことができます。

やってみようか
50÷2=25  で余り無しだから「0」
なので、この「0」を一番右に書きます。  ・・・・・・0になるね。
次に
25÷2=12 と余り0.5が出ますから「1」
この「1」を先の一番右に繋ぐと       ・・・・・・10になるね。

12÷2=6  余りなし「0」        ・・・・・010になる
6÷2=3   余りなし「0」        ・・・・・0010
3÷2=1   余りあり「1」       ・・・・・10010
1÷2=0   余りあり「1」        ・・・・110010
0÷2=0   余りなし           ・・・0110010
2進数は8bitの場合は8桁まで計算するので、8桁目は
0÷2=0   余りなし         ・・・「00110010」

頭から2で割って余りが出れば「1」,余りが無ければ「0」、
これを右から順に並べていくだけですよ。

難しくないだろ?
簡単に考えるようにすれば、解けるよ。
    • good
    • 1
この回答へのお礼

ありがとう

お礼日時:2025/02/24 18:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A