!!!2進数表記 またもやライトな話題。 [GCCのオンラインマニュアル|http://gcc.gnu.org/onlinedocs/]を眺めていたら、"0b"または"0B"のプレフィックスで[2進数リテラルを表記できる|http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Binary-constants.html]ことが分かった。しかし、C99では[浮動小数点リテラルが16進表記できる|http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Hex-Floats.html]ことが定められているのに、非常にプリミティブな2進表記が仕様に入ってないというのは何とも…。まぁ''浮動小数点を10進表記するのは簡単に精度の問題を発生する''ので、16進で代用できる2進よりも浮動小数点の16進表記の方が重要だったのだろうけど。 最近の多くの言語、特にLightweightLanguageでは文字列→数値変換が言語に組み込まれていたりして、その際に基数を指定できるので、静的なリテラルにこだわらないなら、それらを使用すれば簡単に実現可能ではある。 その後Webをだらだらと回っていたら有名な[小飼 弾さんのブログ|http://blog.livedoor.jp/dankogai/archives/50928817.html]で以下のようなものを見つけた。 JavaScript: num.toString(2); perl -le 'print 0b1010' うぉぉぉ、NumberのtoStringにradixが渡せることも知らなかったし、まさかPerlで"0b"がサポートされてるなんて思わなかったなぁ。 びっくりしたのでメモ。