2007年2月4日 星期日

Hackers Delight 2-1 (1/5)

2-1 操縱最右位元

這節提到的式子, 有些看其來沒啥用, 但在後面的章節會陸續找到它們可應用之處

下面式子將把word內 (譯注: 本書所述的word大小為32位元) 最右為1的位元關閉, 當最右為1的位元根本不存在的時候, 本式輸出零 (例如: 01011000 => 01010000)


該式亦可用來偵測一個無號整數是否為power of 2. 把數字帶入該式之後再判斷輸出是否為0即可.
下面這個式子可用來偵測一個無號整數是否為2^n-1型 (包含0跟全1)

下面這個式子可以孤立最右為1的位元, 如果根本沒有為1的位元, 本式輸出零 (例如 01011000 => 00001000)
下面這個式子可以孤立最右為0的位元, 如果根本沒有為0的位元, 本式輸出零. (例如 01011000 => 00001000)
使用下列任一式可產生找出數字最右的連續0-位元串, 如果輸入為零則輸出全1 (例如01011000 => 00000111)
當中第一式可以切割成能同時計算的多個指令 (譯注: 原因詳見本節定理1)

沒有留言: