32nd Diary

過去の日記
today: , yesterday: , total:
2006年
8月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

めーるあどれす:ruby -r base64 -e 'puts Base64.decode64("dGFrQG5vMzIudGs=")'


トップ «前の日記(2006-08-18 (Friday)) 最新 次の日記(2006-08-20 (Sunday))» 編集

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;
}

覚えておけば便利なこともあるかもしれない.

使わない領域のサイズを指定したり, バイトの境界を強制的に指定する方法も用意されているので, 興味のある人は調べてみよう.

Tags: C/C++ Hack

ひぐらしのなく頃に〜綿流し編〜

読みました.

祭具殿でのドタンバタンという音が意味不明すぎる.

聞こえてる人と聞こえてない人がいるってのはどうやったら説明できるんだろう... まさか,単なる怪奇現象だと結論付けるようなことにはならないよね?

どうしても気になる謎はこんくらいで, あとは何かしら理由を付けようと思えば付けられる気がするなぁ.

Tags: Moe Game

M-x sort-lines

Emacsには sort-lines という関数なんかも用意されているんですな.

たとえば以下のような文字列をリージョンで選択して M-x sort-line とすると

hoge
fuga
foo
bar

以下のように並び替えてくれる.

bar
foo
fuga
hoge
Tags: Emacs UNIX
本日のツッコミ(全2件) [ツッコミを入れる]
きむら (2006-08-20 (Sunday) 16:31)

どっちのbitがMSBなのか規格で明記されていない罠。

32 (2006-08-20 (Sunday) 16:55)

うげ,そんな罠があったとは.orz<br>後々,ビットシフトなどもしたい場合もあるだろうことを考えるとイマイチ使えないですね...

[]
本日のPingbacks(全0件)