Write C expressions that evaluate to 1 when the following conditions are true, and to 0 when they are false. Assume x is of type int.
A. Any bit of x equals 1.
B. Any bit of x equals 0.
C. Any bit in the least significant byte of x equals 1.
D. Any bit in the most significant byte of x equals 0.
Your code should follow the bit-level integer coding rules (page 120), with the additional restriction that you may not use equality (==) or inequality (!=) tests.
◆SOLUTIONS◆
A. !!x
B. !!~x
C. !!(x & 0xFF)
D. !!(~ & 0xFF)
-------------------------------------------------
2.68 ◆◆
Write code for a function with the following prototype:
/*
* Mask with least signficant n bits set to 1
* Examples: n = 6 --> 0x2F, n = 17 --> 0x1FFFF …show more content…
Saturating arithmetic is commonly used in programs that perform digital signal processing.
Your function should follow the bit-level integer coding rules (page 120).
-------------------------------------------------
◆SOLUTIONS◆
-------------------------------------------------
2.88 ◆
We are running programs on a machine where values of type int have a 32- bit two’s-complement representation. Values of type float use the 32-bit IEEE format, and values of type double use the 64-bit IEEE format.
We generate arbitrary integer values x, y, and z, and convert them to values of type double as follows:
/* Create some arbitrary values */ int x = random(); int y = random(); int z =