2 進数を 10 進数に直すには

0b 1101 = 1 * 2 ** 0 + 0 * 2 ** 1 + 1 * 2 ** 3 + 1 * 2 ** 4 = 0d11 などの 2 進数の計算を行うプログラムを作ろう。binary.rb

#!/usr/koeki/bin/ruby

printf("2 進数を計算します\n")
printf("1 桁目から入力し、終了したら q を押して下さい\n")
n = 1
x = 0
while true
  STDERR.printf("%d 桁目の数字は何ですか?",n)
  m = gets.chomp
  if m == "q"
    then break
    else m = m.to_i
  end
  x += m * 2 ** (n-1)
  n += 1
end

printf("10 進数に直すと %d になります\n",x)

実際に 0b 1101 をこのプログラムを使って計算し、 0d 13 となることを確かめよ。

本日の講義目次 / 基礎プログラミング I / 2007 年度

Madoka Nishimura <madoka.koeki-u.ac.jp>