人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

n進数の累乗の計算で悩んでおります。添付ファイルをご覧いただきたい次第です。
2進数を10進数にするのは、習ったこともあるので、なんとかできるのですが。。。それを10乗とかn乗しなければならない場合、どのように計算すればよいのでしょうか?

1291467713
●拡大する

●質問者: moon-fondu
●カテゴリ:学習・教育
✍キーワード:添付ファイル 計算 進数
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● レシラム100%
●0ポイント

電卓などどうですか?

◎質問者からの返答

計算でやりたいです。


2 ● レシラム100%
●0ポイント

親にも相談したらどうですか?

◎質問者からの返答

一人暮らしなので親がいません。


3 ● a-kuma3
●30ポイント

添付ファイルの問題を見てて思ったんですが、 "^" の記号が「累乗」を表してないんじゃないかな?

問題2 は、明らかに16進数だし、問題3,4 は、2進数以外だと考えるのは無理があるけど、問題1 は、93 は 10進数か16進数か、ぱっと見には分からないですよね。

^10 が、10進数だということを意味しているのだと想像します。

# 果てしなく不適切だと思いますが。


で、塁上の話。

難しく考えることはありません。掛け算を何回もするだけの話です。

10進数だって、10 とか 100 をn乗するのは簡単だけど、153 とか 77 を 23乗しろとか言われたら、計算するしかないでしょう。

後は、計算結果を変換するだけです。

◎質問者からの返答

すいません、間違えてました(>_<)


4 ● loio
●100ポイント

10乗は、10回掛け合わせることなので、10回掛け合わせたあと2進数に変換したらよいのではないかと思いますが。。。

93^10を2進数にするには、まず93^10を計算してからそれを2進数に変換します。

93^10=48398230717929318249だそうです。

2進数に変換したら1001111110101001000011100110100111000011100100110110011101101001ですね。

CF^10は、CF(16)を10進になおします。すると207

207^16=1.1363850910619971253629575794798e+37

おっと、ここで電卓ならオーバフローしますかね。

自分で、多桁の演算ルーチンを組む必要があるようです。

#define MAX_KETA 100

int x[MAX_KETA];

int y[MAX_KETA];

int z[MAX_KETA*2];

void kakezan(int*x,int*y,int*z){

for(int i=0;i<MAX_KETA;i++)</p>

for(int j=0;j<MAX_KETA;j++)</p>

{

z[i+j]+=x[i]*y[j];

for(int k=i+j;k<MAX_KETA;k++)</p>

if(z[k]>=10){

z[k+1]+=z[k]/10;

z[k]=z[k]%10;

}

else

break;

}

}

こんなかんじで。

◎質問者からの返答

すいません、勘違いさせてしまって。

でも計算できるんですね!

「多桁の演算ルーチン」なんて、はじめて聞きました・・・マクロでしょうか?

このコードを、Excel上とかで実行すると、計算できるのですか?


5 ● rsc
●100ポイント ベストアンサー

基本は、10進数に直してから、それぞれ、n進数に直します。

たとえば、「(93)^10」→「(93)_10」の間違いだとして、答えることにします。

1.

初めから、10進数なので、これを2進数に直します。

2)93
 ---
2)46・・・1↑
 ---
2)23・・・0↑
 ---
2)11・・・1↑
 ---
2) 5・・・1↑
 ---
2) 2・・・1↑
 ---
2) 1・・・0↑
 ---
 0・・・1↑

∴(93)_10=(1011101)_2

2.

まず、10進数に直します。

(CF)_16=(12*16+15)_10=(207)_10

つぎに、16進数に直します。

2)207
 ----
2)103・・・1↑
 ----
2) 51・・・1↑
 ----
2) 25・・・1↑
 ----
2) 12・・・1↑
 ----
2) 6・・・0↑
 ----
2) 3・・・0↑
 ----
2) 1・・・1↑
 ----
 0・・・1↑

∴(207)_10=(11001111)_2

∴(CF)_16=(11001111)_2

3.

10進数に直すと、

(10011100)_2=(1*2^7+1*2^4+1*2^3+1*2^2)_10=(156)_10

ちなみに、組立除法を用いることもできます。(参考)

2) 1 0 0 1 1 1 0 0 
 2 4 8 18 38 78 156 
-------------------------------
 1 2 4 9 19 39 78 (156 

4.

まず、10進数に直すと、

(11100110)_2=(1*2^7+1*2^6+1*2^5+1*2^2+1*2)_10=(230)_10

次に、16進数に直すと、

16)230
 ----
16) 14・・・6↑
 ----
 0・・・14↑

∴(230)_10=(E6)_16

∴(11100110)_2=(E6)_16

※参考URL

http://d.hatena.ne.jp/rsc96074/20101204/1291480290

◎質問者からの返答

ありがとうございます、理解できました!

関数電卓 EvalCalc、チェックしてみます。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ