• 締切済み

2進数を10進数にするには

2進数から10進数にする計算方法をわかり易く教えてください。 2進数11110000は10進数で240  どうかよろしくお願いします。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.6

> わかり易く教えてください。 何を以って分かりやすいとするかが問題ですが... 一番簡単な方法は、 unsigned long value = strtoul("11110000", NULL, 2); printf("%lu\n", value); とすることです。 # 計算方法ではない気もします。

noname#68601
質問者

お礼

一番簡単な方法を理解できるようがんばります。 どうも有難うございました。

noname#68601
質問者

補足

残念ながら一番簡単な方法が独学ではチンプンカンプンです。 独学の素人にも分かりやすくお願いします。

noname#77845
noname#77845
回答No.5

10進数の240が何を表しているかを考えます。 (「^」は累乗を表しています。) 240=2*10^2+4*10^2+0*10^0 です。 では、2進数の場合はどうでしょう? 11110000 =1*2^7+1*2^6+1*2^5+1*2^4+0*2^3+0*2^2+0*2^1+0*2^0 =128+64+32+16 =240 になるので、考え方は同じです。 要するに、位取りをどう表現しているかと言うことが判れば後は機械的に計算できるようになります。 因みに、2の累乗は覚えておいた方が計算が速くなります。 2^0=1(いち) 2^1=2(に) 2^2=4(よん) 2^3=8(ぱー) 2^4=16(いちろく) 2^5=32(さんにー) 2^6=64(ろくよん) 2^7=128(いちにっぱ) 2^8=256(にごろ) 2^9=512(ごいちに) 2^10=1024(いちまるにーよん) 2^11=2048(にーまるよんぱー) 2^12=4096(よんまるくんろく) 2^13=8192(はちいちくんにー) 2^14=16384(いちろくさんぱーすー) 2^15=32768(さんにーちーろんぱー) 2^16=65536(ろくごーごーさんろく) と呪文のように順番に覚えます。 これで、16ビットまで大丈夫!

noname#68601
質問者

お礼

2の累乗教えて頂いて有難うございました。 お世話になりました。

noname#68601
質問者

補足

2*10^2+4*10^2+0*10^0 1*2^7+1*2^6+1*2^5+1*2^4+0*2^3+0*2^2+0*2^1+0*2^0 *が何を意味してるのか分からなかったので、 全体が分からなかったのですが別の方に紹介していただいた、 サイトの説明で計算方法が分かるようになったので、 何とか読めるように思います。 2の累乗は確かに覚えてた方が楽ですね。 どうも有難うございました。

  • okweb-goo
  • ベストアンサー率29% (283/952)
回答No.4

このサイトがわかりやすいですね。 http://www.asahi-net.or.jp/~ax2s-kmtn/ref/bdh.html

参考URL:
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/bdh.html
noname#68601
質問者

お礼

良いサイトを紹介して頂いて有難う御座いました。 お世話になりました。

noname#68601
質問者

補足

このサイトの説明が大変よく分かりました。 おかげで皆さんの説明も理解できるようになりました。 11110000の1の所の桁数の2の累乗を足し算して、 16+32+64+128=240になる訳ですね。 どうも有難う御座いました。

  • 86tarou
  • ベストアンサー率40% (5093/12700)
回答No.3

2進数の各桁が10進数で幾らになるかが分かれば、2進数で“1”の桁だけその数を足せば良いだけです。具体的には下桁から1(2の0乗)、2(2の1乗)、4(2の2乗)、8(2の3乗)、16(2の4乗)、32(2の5乗)、64(2の6乗)、128(2の7乗)…というふうに1から倍ずつになっていきます。 例えば質問にある2進数の“11110000”だと、10進数で16+32+64+128=240になります。

noname#68601
質問者

お礼

わざわざお世話になりました。 お礼の欄に書くべきなのを間違いました。 どうも有難う御座いました。

noname#68601
質問者

補足

>2進数の各桁が10進数で幾らになるかが分かれば、2進数で“1”の桁だけその数を足せば良いだけです。 この意味が分からなかったのですが今は分かるようになりました。 どうも有難う御座います。

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.2

例えば、4桁の10進数は、各桁の重みが下桁から、1・10・100・1000と成りますね。 1234なら、4の所は 4x1、3の所は 3x10、2の所は 2x100、1の所が 1x1000、となりますね。 それを全て足した答えが、1234です。 2進数の場合は、下桁から、1・2・4・8・・・・と言うように、倍々に成っていきます。 0110なら、0+2+4+0という風になります。 何桁有っても、倍に成るだけなので、1が有る桁の重みを全て足せば良いのです。

noname#68601
質問者

お礼

補足に書いた事はお礼の欄に書くのを間違いました。 どうも有難う御座いました。

noname#68601
質問者

補足

>1が有る桁の重みを全て足せば良いのです この意味が分かるようになりました。 何とか自信がついたような。 どうも有難うございました。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

2進で考えると面倒です = 2^7 + 2^6 + 2^5 + 2^4 = 128 + 64 + 32 + 16 = 240 一番下の桁で 2^0 で、1か0、下から2桁目で 2^1で、2か0と、2^n で足し算します ですので・・・16進にして = 1111 0000 b = F0 h で、 = 16 d ( 10 h ) × 15 = 250 と考えたほうが・・・

noname#68601
質問者

お礼

お礼の欄と補足の欄を書き間違いました。 どうもお世話になり有難う御座いました。

noname#68601
質問者

補足

= 2^7 + 2^6 + 2^5 + 2^4 これがさっぱり分からなかったのですが、 今は理解できるようになってます。 思ったより簡単でした。 どうもありがとうごさいます。

関連するQ&A