トップ 検索 一覧 ヘルプ RSS ログイン

2進数表記の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!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進表記の方が重要だったのだろうけど。
[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"がサポートされてるなんて思わなかったなぁ。

びっくりしたのでメモ。