Gsp 215 Week 1 Work

Only available on StudyMode
  • Topic: Bit, Data type, Byte
  • Pages : 4 (709 words )
  • Download(s) : 354
  • Published : October 14, 2012
Open Document
Text Preview
2.61 ◆◆
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
* Assume 1 <= n <= w
*/
int lower_one_mask(int n);
Your function should follow the bit-level integer coding rules (page 120). Be careful of the case n = w.
◆SOLUTIONS◆
#include <limits>

int value = 0x13;
int val_1 = 0x22;
int val_2 = 0x25;

int new_mask = mask_1_low(value, 4);
int val_f_1 = val_1 & new_mask;
int val_f_2 = val_2 & new_mask;

int mask_1_low(int value, int n)
{
    unsigned int mask_val = numeric_limits<unsigned int>::max();     mask_val = ~(mask_val << n);
    return (value & mask_val);
}
-------------------------------------------------

2.71 ◆
You just started working for a company that is implementing a set of procedures to operate on a data structure where 4 signed bytes are packed into a 32-bit unsigned. Bytes within the word are numbered from 0 (least significant) to 3 (most significant). You have been assigned the task of implementing a function for a machine using two’s-complement arithmetic and arithmetic right shifts with the following prototype:

/* Declaration of data type where 4 bytes are packed
into an unsigned */...
tracking img