javascript%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E7%AB%B6%E6%8A%80%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

10進数から2進数 2進数から10進数への変換 JavaScript

2020-07-12
6 min read
10進数から2進数 2進数から10進数への変換 JavaScript

目次

  1. 概要
  2. 10進数から2進数
  3. 2進数から10進数
  4. テスト

概要

10進数から2進数、2進数から10進数への変換を行うJavaScriptのコードの紹介。 JSの場合、10進数から2進数への変換はtoStringメソッド。2進数から10進数への変換はparseInt関数を使えばサクッと算出できますが、それらを使わずに実装しました。

10進数から2進数

function intToBin(num) {
  let ans = [];
  if (num === 0) {
    return '0';
  }
  while (num > 0) {
    ans.push(num % 2);
    num = Math.floor(num / 2);
  }
  return ans.reverse().join('');
}

2進数から10進数

function binToInt(str) {
  let nums = str.split('').map(Number).reverse();
  let ans = 0;
  for (let i = 0; i < nums.length; i++) {
    ans += (2 ** i) * nums[i];
  }
  return ans;
}

テスト

const max = 10e5;
for (let i = 0; i < max; i++) {
  console.log(i);
  if (intToBin(i) !== i.toString(2)) {
    console.log('error:1');
    break;
  }
  let bin = i.toString(2);
  if (binToInt(bin) !== parseInt(bin, 2)) {
    console.log('error:2');
    break;
  }
}

10^5 までは問題なく動きました。

About the Author
githubzennqiita
ただの備忘録です。

※外部送信に関する公表事項