綾小路龍之介の素人思考

[network] 10進数から2進数への変換

何回も復習してそれでも覚えないのでメモする。商が0になるまで2で割っていって、余りを逆順に並べる。

192という10進数を2進数に変換することを考える。商が0になるまで2で割っていって、余りを逆順に並べる。

192 = 2 * 096 + 0
096 = 2 * 048 + 0
048 = 2 * 024 + 0
024 = 2 * 012 + 0
012 = 2 * 006 + 0
006 = 2 * 003 + 0
003 = 2 * 001 + 1
001 = 2 * 000 + 1

(192)_10 = (11000000)_2

忘れた時は、10で割っていって、余りを逆順に並べる。

192 = 10 * 019 + 2
019 = 10 * 001 + 9
001 = 10 * 000 + 1

(192)_10 = (192)_10

32bitで表したければ、頭(位の高い側)をゼロで埋める。右側が位の低い側であることが多いので左側埋めることが多い。

(0000000192)_10 = (00000000000000000000000011000000)_2

どっち側埋めるかわからなくなったら、10進数で0192と1920は全然違うことを思い出す。

Fという数のp進数への基数変換ってつまりこういうこと。

F_n = p * F_{n+1} + F_n mod p
n = 0;
my $Fn  = 192;
my $p   = 2;
my $str = '';
do {
        $str = ($Fn % $p).$str;
        $Fn = int($Fn / $p);
} while ($Fn == 0);
print $str;

一行で書くと以下。

$ perl -le '$Fn=192; $p=2; $str=""; do{$str=($Fn%$p).$str; $Fn=int($Fn/$p);}while($Fn); print $str;'
11000000

リファレンス

  1. 10進数 2進数 - Google 検索
  2. 2^32 - Google 検索

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2009-06-14T22:11:03+09:00
  2. Modified: 2009-06-14T22:11:03+09:00
  3. Generated: 2017-08-22T23:09:31+09:00