Assignment #2: Integer Operations, FloatingPoint, and C
Contents:
Overview
Topic: Operating on binary integer and floating point numbers. Arithmetic (+, , *, /, %), Boolean (&, , ^, ~), and shifts (<<, >>)
Related Reading: Section 2.3 and class notes
Practice Problems
Practice problems from the textbook (answers are at the end of the chapter):

Practice Problem 2.1, on p. 37.

Practice Problem 2.4, on p. 39.

Practice Problem 2.8, on p. 51.

Practice Problem 2.14, on p. 57.

Practice Problem 2.16, on p. 58.

Practice Problem 2.40, on p. 103.

Practice Problem 2.44, on p. 108.
Problems to be Submitted (25 points)
When you turn in your assignment, you must include a signed cover sheet (PDF version) with your assignment (you're assignment will not be graded without a completed cover sheet).
You are allowed to submit your assignment via email, but if you choose to do so, you must bring a hardcopy of your assignment along with a completed cover sheet to the instructor at the next class. (Note: Do not email the instructor any .zip file attachments, as SLU's email may not accept these emails; i.e. the instructor may not receive your email.)
Answers without work will recieve zero credit.
 (5 points) Operations on Data:
Compute results for the following data operations.
Give your answer in binary or hex, and be sure to show your work
 0x6E42B  0x37CA_{ }
 1001101000101_{2} >> 5
 0x07AD4 ^ 0x03B5D
 (23 << 4)  0xFF_{ }
 0x9C % 6
 (6 points) FloatingPoint Representations:
 Given the following IEEE 32bit singleprecision floatingpoint representation, give its equivalent decimal value:
01000111 00110100 11010000 00000000
 Convert the base2 number 10101.1100110011 into IEEE singleprecision floating point.
 Convert the decimal number 936.4375 into IEEE doubleprecision floatingpoint.
 (4 points) Shifts and Bit Manipulation for Fast Multiplies and Divides:
Note: While these four questions provide an example value for x (so that you may solve for y if desired), what I'm really looking for is the value of K assuming any (valid) value of x.
 The following code corresponds to the mathematical equation: y = K * x, for some fixed value of K. In this case, what is K?
x = 11
y = (x << 4)  x
 The following code similarly corresponds to: y = K * x, but for what value of K?
x = 7
y = (x << 5)  (x << 2) + x;
 The following code corresponds to the mathematical equation: y = K * x, for some fixed value of K < 1. What is the value of K?
x = 35
y = (x >> 1)  (x >> 3)
 Relative to multiplication and division, what mathematical equation does the following code produce?
x = 102
y = x & 0x0f
 (8 points) Pseudocode using Integer Operations:
a = 8
b = 29
c = 0
while (b >= a)
{
b = b  a;
c = c + 1;
}
print c
print b
 For the given values of a and b, what is printed?
 If the initial values of a and b were instead a = 4 and b = 17, what would be printed?
 How about if the initial values of a and b were a = 8 and b = 4 ?
 How about if the initial values of a and b were a = 5 and b = 25 ?
 What mathematical operation does this pseudocode perform? For arbitrary values of a and b, what does the final result in b correspond to? How about the final c value?
 Create a C program that asks the user to enter values for a and b, then computes the values for b and c, as shown in pseudocode above, and finally print out these two results.
Please email your .c file to instructor (as well as turning in a hardcopy).
 (2 points)
In image processing, a smoothing mask is sometimes used to soften hard edges and smooth out random noise. This is done by taking a weighted average of the pixel itself with its nearest neighbors.
For example, given the following common 3x3 smoothing filter like the following, when centered over a pixel at p[y][x]
the equation/code for smoothing that pixel is expressed as:
p[y][x] = (4 * p[y][x] + p[y][x1] + p[y][x+1] + p[y1][x] + p[y+1][x]) / 8;
Since multiplies and divides are timeconsuming operations, give a version of this equation/code that uses much more efficient (i.e faster) operations.