Problems from _Computer Systems: A Programmer's Perspective_ (temporarily excerpted here until book copies arrive in the bookstore): 2.61 Write C expressions that evaluate to 1 when the following conditions are true, and 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. [For D, Least-significant is also allowed, since this copy of the question used to say "least".] 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. [ From page 120: Forbidden: Conditionals, loops, switch statements, function calls, macro invocations, division, modulus, multiplication, relative comparison operators (<, >, <=, >=), and casting (either implicit or explicit). Allowed: All bit-level operations, all logical operations, left and right shifts with shift amounts between 0 and 31, addition, subtraction, equality (==), inequality (!=), and integer constants INT_MIN and INT_MAX. ] 2.62 Write a function int_shifts_are_arithmetic() that yields 1 when run on a machine that uses arithmetic right-shifts for int's, and 0 otherwise. Your code should work on a machine with any word size. Test your code on several machines. [The coding restrictions above do not apply to this problem.]