プログラマの数学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