college/Fall-2024/CS-3843/Assignments/5/Assignment.typ

106 lines
4.6 KiB
Plaintext
Raw Normal View History

2024-10-20 15:48:32 -05:00
#import "@preview/tablex:0.0.4": tablex, rowspanx, colspanx, hlinex, vlinex
#show link: set text(blue)
#set text(font: "Calibri")
#show raw: set text(font: "Fira Code")
#set page(margin: (x: .5in, y: .5in))
#let solve(solution) = [
#let solution = align(
center,
block(
inset: 5pt,
stroke: blue + .3pt,
fill: rgb(0, 149, 255, 15%),
radius: 4pt,
)[#align(left)[#solution]],
)
#solution
]
#let note(content) = [
#align(
center,
block(
inset: 5pt,
stroke: luma(20%) + .3pt,
fill: luma(95%),
radius: 4pt,
)[#align(left)[#content]],
)
]
#align(center)[
= CS 3843 Computer Organization
HW 5\
#underline[Price Hiller] *|* #underline[zfp106]
]
#line(length: 100%, stroke: .25pt)
[This is a bonus HW]
\
\
1. The word size is 5 bits. How many integers can you represent with that? What is the range for unsigned integers? What is the range for signed integers?
#solve[
- Can represent $2^5$ integers, or $32$ integers in total.
- Range of unsigned integers: $0 -> 2^(w)-1$, from $0 -> 31$
- Range of signed integers: $-2^(w-1) -> 2^(w-1) - 1$, from $-16 -> 15$
]
2. Show that the negation of Tmin is Tmin. You can pick any Tmin (Tmin for 4-bits, Tmin for 5 bits etc). Also, explain why the negation of Tmin is Tmin. (Hint: "negation" and "not operator" is not the same thing)
#solve[
The negation of a number in 2's complement is as follows:
- ∵ $~x + x ≡ 1111...111 ≡ -1$
- $~x + 1 == -x$
For example, using the negation of $T_(min)$ for a word size of 4 bits:
+ $T_(min_4) = -2^(4-1) = -8$
+ Negate $-8$, binary: $1000$
+
]
3. Suppose that a and b have byte values 0x55 and 0x46, respectively. What will be the value for this expression: a & !b ? What will be the value for this expression: a && ~b?
4. You have two decimal values as 12 and 4. The word size is 5 bits. Perform the 2's complement addition and identify if overflow (positive or negative) happens or not. Mention the final result as well.
#solve[
+ Solve $12 +^t_5 4$
+ Note that $T_(max_5) = 15$
+ Not that $T_(min_5) = -16$
+ Convert $12$ to binary: `01100`
+ Convert $4$ to binary: `00100`
+ Add `01100` $+$ `00100`
+ #table(
stroke: none,
align: right,
[`01100`],
[`+ 00100`],
table.hline(),
[`10000`]
)
+ The most significant bit is $1$, positive overflow has occured
+ Apply 2's complement:
+ Simplify: $16 mod 32$
+ $16 mod 32 = 16$
+ Check bounds, $16 > T_(max_5)$ is True
+ Thus there is a positive overflow
+ Remove all bits beyond the $w - 1$ bit for bounds, where $w - 1 = 4$
+ $16$ to binary is $10000$
+ Remove the bit at $w_5$, $0000$
+ ∴ $12 +^t_5 4 = 0$
]
*You need to explain for each question why you chose True/False as your answer.*
5. If you multiply (-2) with (-2), and the word size is 3-bits, then the final result will be (+4). T/F
#solve[
*False*.
]
6. Assume data type int is 32 bits long and uses a two's-complement representation for signed values. The variables are declared and initialized as follows: int x = foo(); /* Arbitrary value */ int y = bar(); /* Arbitrary value */ unsigned ux = x; unsigned uy = y; The following C expression is true (evaluates to 1) for all values of x and y: x+y == uy+ux. Hint: Think about what happens at bit-level T/F
7. Assume variables x, f, and d are of type int, float, and double, respectively. Their values are arbitrary, except that neither f nor d equals +∞, −∞, or NaN. The following C expression is false (evaluates to 1) for all values of f: f == (float)(double) f. T/F
8. Bias is a bias value equal to 2 k-1 1 (127 for single precision and 1023 for double). This yields exponent ranges from 126 to +127 for single precision and 1022 to +1023 for double precision. Here, k is the size of exp bits. T/F
9. When the sign bit is 1, but the other fields are all zeros, we get the value 0.0. T/F
10. Round-to-Even rounding mode is the default rounding mode for most of the machines for floating- point numbers. T/F
11. Assuming the expressions are evaluated when executing a 32-bit program on a machine that uses two's-complement arithmetic See below the expression: -1 < 0U; What is the evaluation for this expression? T/F
12. We can represent -1 in Hex with 0xFFFFFFFF for 32-bits. T/F
13. Assume variables x, f, and d are of type int, float, and double, respectively. Their values are arbitrary, except that neither f nor d equals +∞, −∞, or NaN. For the following C expressions, it will always be true (i.e., evaluate to 1): d*d >= 0.0 T/F