ハッカーのたのしみ


ずいぶん前に購入して、やっとこ手をつける決心が。
ちょいちょい進めていきたいと思う。
以下、覚書

最右ビット操作

本日勉強したのは下のようなプログラムです。

/* 符号ナシ整数が2の累乗かを判別する際に使用      */
 x & ( x - 1 )

こういう賢い方法は、習わないとそう簡単に思いつかないと思うなぁ

/* 上記と同じ判別に使用できる     */
 x & ( x + 1 )
/* 上記と同じ判別に使用できる     */
 x & ( x + 1 )

次は、1番右の「1」のbitを抽出

/* 1番右の1のbitを抽出         */
/* x & ( -x ) */

void main ( void )
{
	int		x = 0x58;
	
	printf( "%x\n", x );/* 58 */
	printf( "%x\n", x & ( -x ) );/* ■ 8ってことです。 */
}

更に、1番右の「0」のbitを抽出

/* 1番右の0のbitを抽出         */
/* ~x & ( x + 1 ) */

void main ( void )
{
	int		x = 0x58;
	
	printf( "%x\n", x );/* 58 */
	printf( "%x\n", ~x & ( x + 1 ) );/* ■ 1ってことです。 */
}

ビット操作っていうのはやり方わかると色々なところで使えたりしそう。
知らないとなかなか使えないですしね。。

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか

  • 作者: ジュニア,ヘンリー・S.ウォーレン,Jr.,Henry S. Warren,滝沢徹,玉井浩,鈴木貢,赤池英夫,葛毅,藤波順久
  • 出版社/メーカー: エスアイビーアクセス
  • 発売日: 2004/09
  • メディア: 単行本
  • 購入: 35人 クリック: 732回
  • この商品を含むブログ (129件) を見る