基礎プログラミング I 第 4 回 (プログラミングの方法) 「2 進数を 10 進数に直すには」 講義ノート目次

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

#!/usr/koeki/bin/ruby

# coding: euc-jp

STDERR.print("2 進数を計算するよ\n")
STDERR.print("1 桁目から入力し、終了したら q を押してください\n")

n = 1  # 桁数
x = 0  # 10進数の数
base = 2 # 2 進数 (binary) 

while true
  STDERR.printf("%d 桁目の数はいくつですか: ", n)
  m = gets.chomp   # n 桁目の数字
  if m == "q"
    break
  else
    m = m.to_i
  end
  x += m * base ** (n-1)
  n += 1
end

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

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