## Chapter 2. Basics

**2–1 Manipulating Rightmost Bits**

Some of the formulas in this section find application in later chapters.

Use the following formula to turn off the rightmost 1-bit in a word, producing 0 if none (e.g., 01011000 ⇒ 01010000):

** x** & (

**–**

*x***1**)

This can be used to determine if an unsigned integer is a power of 2 or is 0: apply the formula followed by a 0-test on the result.

Use the following formula to turn on the rightmost 0-bit in a word, producing all 1’s if none (e.g., 10100111 ⇒ 10101111):

** x** | (

**+**

*x***1**)

Use the following formula to turn off the trailing 1’s in a word, producing ** x** if none (e.g., 10100111 ⇒ 10100000):

** x** & (

**+**

*x***1**)

This can be used to determine if an unsigned integer is of the form 2^{n}– 1, 0, or all 1’s: apply the formula ...

Get *Hacker’s Delight, Second Edition* now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.