アプリ版:「スタンプのみでお礼する」機能のリリースについて

10進数の-54.321を2進数に変換する際、
整数部分を2で除算し、小数部分を2で乗算し、循環するか整数になるか、或いは8bitまで計算する、という方法で答えを導き出そうとしたのですが、
整数部分のみ答えは、あっていたのですが、小数部分が間違っておりました。

整数部分の計算は、
-54/2=-27...0
-27/2=-13...1
-13/2=-6...1
-6/2=-3...0
-3/2=-1...1
-1/2=0...1

小数部分の計算は、
0.321*2=0.642
0.642*2=1.284
0.284*2=0.568
0.568*2=1.136
0.136*2=0.272
0.272*2=0.544
0.544*2=1.088
0.088*2=0.176

011011.01010010
整数部分のbitが足らないので符号を意味する0を上一けた目に、桁合わせの0を下一桁目に追加。
00110110.01010010
各ビットを反転。
11001001.10101101(1の補数)
最終ビットに1を追加
11001001.10101110

どうすれば正しく計算できるのでしょうか。

A 回答 (1件)

合ってますよ。


小数部分の計算の整数部分を並べるだけです。
並べるときにミスしただけです。

2進の0.abcdef・・・・・の意味は
a×1/2 + b×1/2² + c×1/2³ + d×1/2⁴ + e×1/2⁵・・・・
=1/2 (a+b×1/2+ c×1/2² + d×1/2³ + e×1/2⁴・・・)

これに2を掛ければ
a+ (b×1/2+ c×1/2² + d×1/2³ + e×1/2⁴・・・)

b×1/2+ c×1/2² + d×1/2³ + e×1/2⁴・・・
に2を掛ければ
b+ (c×1/2 + d×1/2² + e×1/2³・・・)

c×1/2 + d×1/2² + e×1/2³・・・
に2を掛ければ
c+ (d×1/2 + e×1/2²・・・)

2を掛けた整数部分に次々とabcdef・・・・が表れる


0.321×2=0.642 ∴0
0.642×2=1.284 ∴1
0.284×2=0.568 ∴0
0.568×2=1.136 ∴1
0.136×2=0.272 ∴0
0.272×2=0.544 ∴0
0.544×2=1.088 ∴1


以下、この繰り返しだから
小数部分は0.0101001・・・・

質問の「小数部分の計算は、」の下に有る、整数部分だけを並べたものと同じでしょ??
    • good
    • 0

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