地味にハマったので解説する。2進数小数ではなくて、2進数整数を求めるときに、2で割って余りがどうとかするやつについて。1だから下から順にとって、456(10)は2進数では111001000(2)というやつだ。やり方は書いてあっても、なんでそうなるのっていうのは本にはなかなか書かれていない。「なんでそうなるの?」とか証明の話は、割とないがしろにされている気がする。個人的に、「それ自明やから証明省くよ」って言われてもわかってる人って少なそうな気がしてならない。そこで、これを証明してみた。証明する前の前提知識として、剰余の計算について。1」というのはみんなよく知っていると思うけれど、それを普通の数式にするのは若干難しい。この「あまり」というやつが結構曲者で、実際頭の中でやっていることは下のようなことである。1実のところ、ぼくたちは割り算なんてものはできない。なんか割り算ができてる風に見えるのは、掛け算をして求めているだけのことである。3で割るのか、じゃあ3×1=3だから大丈夫そうだし、あまりは2だな。ほら、3越えなかった。「5÷3は1あまり2だ」っていう長期記憶のおかげだ。微分に対して積分がやたら難しいのも、これと殆ど似ている。1のほうに戻すけれど、この形、2進数の定義の文に似ているではないか。これはまさにこう書き換えることができる。2^0(2^1は、2の1乗という意味である。2^0は2の0乗で、2の0乗は当然1だ。)だから3(10)は、11(2)である。次に、7のときについて考えてみよう。7を、2で割ると、このようになる。1では、3を先ほどと同じように2で割ってみよう。次に括弧の中身を展開しよう。区切りがわかりにくいので、赤と青をつけてみた。したがって、7(10)は111(2)である。意味が同じなのである。ある数nについての例を示そう。rest[m]となる。restは「mで割ったときのあまり」という意味だ。restは当然、1、もしくは、0である。(2で割っているんだから!)ここで、mが2以上ならば、mを更に2で割ることができる。2^0と書き換えることができる。2^0となっていくことがわかるだろう。あとはこれを繰り返していくだけだ。従って8進数を求めたい場合には、8で割りまくればいい。次に、小数の2進数を求める際には、どうすればよいかと言う話だ。...だから、0.01111...ってやつだ。「さっきは割ったんだから、今度は掛けたらいいんでしょ。1/2のあまりじゃん。1/2のあまりは、1/2進数だ。逆から考えると、割と難しくて詰むので、別の概念で考えることにする。2進数の小数部分は次のように表せる。勘違いしてほしくないのだが、次に書くものは、方程式ではなくて、恒等式である。それで、繰り返すが、これは恒等式で、ぼくたちが求めたいのは、a、b、c、...の部分である。その後、左辺の値がどのようになろうと、知ったことではない。すごく複雑な式」の形にしなくても求められるのだ。すごく単純だが、ここでaが求まった。当たり前だが、aは、10進数2fの2進数の整数部分のことである。「2進数でこのように表したものは10進数では2fですよ」という意味だからだ。aは求まったので取り除いて考えよう。...となって、bが求まった。このようにして2をかけていくと求められることがおわかりいただけただろうか。僕が理解に苦労した理由まとめ。's/[^0-...2015-03-25ハミングコードについて。応用情報過去問のやつ。曜日計算を求める方法にツェラーの公式というものがある。試し...2014-06-16決めた。おれは来年末までに年収400万円を達成する。