プログラマの数学1
第1章 ゼロの物語
【まとめ】- 数・問題が大きくなってくると解くのが難しくなり、間違いやすくなる。
- 大きな問題は、小さな『まとまり』に分けて解くこと。
- ゼロという何もないことを表す数字を使用することでルールをシンプルにできたりする。
【プログラム】
基数変換の話しがあったので2進→10進のプログラムを作成してみた。
※正の整数しか対応していない。
0〜99までの10進の数値をtoStringで2進に変換、それをbintodecで10進に戻して比較。
Java初心者が作ってみたらこんな感じになった。
import java.lang.Math;public class CardinalNumber {
private static int total;public static void main(String arg[]) {
CardinalNumber cn = new CardinalNumber();
for (int i = 0; i < 100; i++) {
String bin = Integer.toString(i, 2);
total = 0;
cn.bintodec(bin);
System.out.println(bin + ":" + i + ":"
+ total + ":" + (i == total));
}}
public void bintodec(String bin) {
int len = bin.length();
int len2 = len - 1;
for (int j = 0; j < len; j++, len2--) {
if (bin.charAt(j) == '1') {
total += Math.pow(2, len2);
}}
}
}
【結果】
右から2進:10進:10進(bintodec):比較結果
0:0:0:true
1:1:1:true
10:2:2:true
・・・
1100001:97:97:true
1100010:98:98:true
1100011:99:99:true