CSCI 237

Computer Organization

Home | Schedule | Assignments | Links | Williams CS

Practice Problems

The table below lists practice problems that test topics we emphasized in class. We recommend completing these practice problems to reinforce the course material in prepration for exams. Some questions have answers in the textbook, but the TAs and instructors are available to help work through any questions that you have about the material.

Problem Page # Topics Covered (Notes)
Unit 1 Unit 1 Unit 1
2.17 65 Converting Hexadecimal to binary representations; unsigned vs. twos-complement.
2.22 79 Sign extension. (Equation 2.3 is on page 64)
2.23 80 Arithmetic shifting.
2.24 82 Effect of truncating on signed/unsigned.
2.29 93 Signed addition; overflow.
2.30 94 Overflow. (No need to compile the code, but this problem may help with lab)
2.61 (A, B) 129 C and bitwise representations of integers.
2.68 132 C and bitwise representations of integers.
-- -- Write the 16-bit twos-complement representation of the following numbers: -1, 2864, -1573
2.45 111 Binary fractional values.
2.47 117 IEEE Floating point encoding/decoding.
2.48 119 Bitwise representation of floating point numbers
- - Consider the decimal value -718.40625.
  1. Convert this number to its IEEE single precision (32-bit) floating point representation.
  2. Convert the 32-bit binary number from the previous problem to hexadecimal.
- - Consider the hexadecimal value 0xC295D000.
  1. Convert the hexadecimal number to a 32 bit binary number.
  2. Assume this 32 bit number is an IEEE single precision (32b) floating point number. What is its decimal floating point value?
- - Write down the binary representation of the decimal number -316.5625 assuming IEEE single-precision floating point format.
Unit 2 Unit 2 Unit 2
3.1 182 Addressing/Operand Forms
3.2 185 Operand sizes
3.5 189 Assembly -> C conversion
3.6 192 Load Effective Address
3.7 193 Assembly -> C conversion
3.8 194 Arithmetic Operations
3.10 197 Assembly -> C conversion
3.11(A) 197 Assembly Tricks
3.13 204 Comparisons
3.16 212 C if/else ↔ C goto code
3.18 213 if/else ↔ assembly
3.24 224 while loops ↔ assembly
3.26 228 Loop translations
3.27 231 C for loop ↔ C goto code
3.28 231 for ↔ assembly
3.30 236 Switch Statements
3.33 246 Procedure Arguments, Registers, & the Stack
3.34 253 Local storage & caller/callee saved registers
3.35 254 Recursion
3.36 256 Arrays and addressing
3.37 257 Array/pointer/address ops and assembly
3.41 268 Struct data types
3.58 311 Assembly -> C conversion
3.60 312 C <-> Assembly Loop transformations
3.64 316 Multi-dimensional arrays and memory layouts
3.65 317 Arrays <-> pointers