2006-08-19 (Saturday) [長年日記]
■ ビットフィールドを使ったバイトの表現
今日の話はなかなかマニアックだな.
C言語の構造体にはビットフィールドという仕組みがあり, これを利用すると構造体をビット単位で扱うことができる.
しかも,共用体と一緒に使えばビットごとに扱いながらも, バイトとしても扱う,なんて芸当も可能なのである.
たとえば,こんな感じで使うことができる.
#include <stdio.h> int main(int argc, char* argv[]) { union { struct { int bit0 : 1; int bit1 : 1; int bit2 : 1; int bit3 : 1; int bit4 : 1; int bit5 : 1; int bit6 : 1; int bit7 : 1; }bits; char byte; }byte; /* 0000 0000 */ byte.byte = 0; /* 0000 0001 */ byte.bits.bit0 = 1; /* 0000 0101 */ byte.bits.bit2 = 1; /* 0000 1101 */ byte.bits.bit3 = 1; printf("%d\n", byte.byte); return 0; }
覚えておけば便利なこともあるかもしれない.
使わない領域のサイズを指定したり, バイトの境界を強制的に指定する方法も用意されているので, 興味のある人は調べてみよう.
■ ひぐらしのなく頃に〜綿流し編〜
読みました.
祭具殿でのドタンバタンという音が意味不明すぎる.
聞こえてる人と聞こえてない人がいるってのはどうやったら説明できるんだろう... まさか,単なる怪奇現象だと結論付けるようなことにはならないよね?
どうしても気になる謎はこんくらいで, あとは何かしら理由を付けようと思えば付けられる気がするなぁ.
■ M-x sort-lines
Emacsには sort-lines という関数なんかも用意されているんですな.
たとえば以下のような文字列をリージョンで選択して M-x sort-line とすると
hoge fuga foo bar
以下のように並び替えてくれる.
bar foo fuga hoge
[]
本日のPingbacks(全0件)









どっちのbitがMSBなのか規格で明記されていない罠。
うげ,そんな罠があったとは.orz<br>後々,ビットシフトなどもしたい場合もあるだろうことを考えるとイマイチ使えないですね...