1. Due Date
HW 2 due: : Due by noon, Wednesday March 3, 2021
2. About Written Assignments
Written assignments are not worth as much as lab assignments, but are designed to give you some extra practice on lecture material and on some of the type of questions you may see on course exams.
You are required to work with your assigned Homework and Study Group on homework assignments in this class. Please read this information about our requirements for working in your study groups, group roles, and tips for working on joint homework assignments with your study group: About CS31 Homework and Study group.
You will submit just one joint solution by your Homework and Study group to gradescope (see the link to the assignment below). Be sure that all students in your group are included in your gradescope group submission, and be sure to take turns in different group roles each HW assignment (see the link above for more information). The homework assignment will include a section that you fill in specifying who served in each role.
How to use Gradescope is a short video stepping you through how to use gradescope and how to add group partners to create your joint Homework Group gradescope submission.
3. The Assignment
Answer the questions below showing your work and/or explaining your answer. For
these questions, if a question specifies a number of bits, your answer should
be in a corresponding number of digits. For example, if the question asks to
add 4 bit values together your answer should be a 4 bit value, not a 64 bit
one. Also, assume that for signed values, the highorder bit is the sign
bit. For example, 1000
should be interpreted as negative as a 4bit signed
value, but positive as an 8bit signed value (00001000)
.

What is the largest positive value that can be represented with a 2’s complement 8 bit number? Explain.

Convert the unsigned 8 bit binary value
10110000
to decimal. Show your work. 
Convert the signed 8 bit binary value
10110000
to decimal. Show your work. 
For the following 8 bit binary values (show your work):
value 1: 01010101 value 2: 01100100

What is the binary representation of the result of adding them together (show your work)?

Does this operation result in overflow? If so, when (i.e., under what circumstances / interpretations of the values)?

What is the decimal representation of the resulting addition if the two values are signed 8 bit values? (show your work)

What is the decimal representation of the resulting addition if the two values are unsigned 8 bit values? (show your work)


For the following 8 bit binary values (show your work):
value 1: 01010101 value 2: 01100100

What is the binary representation of the result of subtracting the second from the first (show your work)?

Does this operation result in overflow? If so, when? explain.

What is the decimal representation of the resulting subtradction if the two values are signed 8 bit values? (show your work)

What is the decimal representation of the resulting subtradction if the two values are unsigned 8 bit values? (show your work)


Convert the following 2byte binary numbers to hexadecimal, indicating how each part is converted (the binary values are shown with spaces between each 4 digits just to make them easier to read):

0001 0010 0101 1111

1011 0110 1101 1001


Convert the following hexadecimal numbers to binary, indicating how you converted each digit:

0x23

0xe1c4


Convert the following decimal values to 8 bit (2’s complement) binary and to hexadecimal. Show your work:

93

93


Given the following 4 bit binary values, show the results of each bitwise operation, showing both the binary and decimal result value for each (list the unsigned decimal value):

0010  ~(1011)

0101 & ~(1001)

0011 ^ 1010

0111 << 2

0111 >> 2

3.1. Answer writeup and gradescope
For most of the problems on this assignment we will give you the option of entering your answer directly into gradescope, or uploading an image or a .pdf file of your answer. As always, please ensure any handwritten answers are legible and that the uploaded file is readable. You likely want to do a mix, as certainly for some of these, a handwritten answer and image upload will likely be easier.
If you enter you answer directly in gradescope, we suggest you first type them into an text file, and then copy and paste into gradescope (just in case you forget to save your answer, you don’t want to lose it). For example, I might create a file in vim into which I’ll enter my answers:
vim hw2_soln.txt
Gradescope also does not support much special formatting of answers. As a result, if you enter your answers (vs. upload a file), please follow these conventions for representing specific numeric formats:

for superscript use
^
, so2^4
is 2 to the fourth power. 
for subscripts use a number after a variable, so
X3
is X sub 3. 
for hexadecimal values, use the
0x
prefix, so0x123a
is hexadecimal value 123a. 
for binary values, use the
0b
prefix, so 0b101010 is binary value 101010. 
for decimal values, use no prefix, so 10101 is decimal value 10,101.
3.2. Verifying The Correctness of your answers
For these questions you will be graded on showing how you applied the operation or conversion method we described in class: you must show your work or explain how you got the result to receive credit.
However, you can verify the correctness of your answer to most questions using
gdb’s print
command (or just p
is shorthand for print
) with formatting
options to print out the value of expressions involving hex, binary, or
decimal values in different representations (p/x
for hex, p/t
binary,
and p/d
decimal).
p/d 0b101010 # print a binary value in decimal
p/d 0xa1f3 # print a hexadecimal value in decimal
p/x 1234 # print a decimal value in hexadecimal (note: gdb does not print leading 0's)
p/t 1234 # print a decimal value in binary (note: gdb does not print leading 0's)
p/t 0x3f # print a hex value in binary
p/t 0b1010 + 0b0010 # print result of adding two binary in binary
p/d 0b1010 + 0b0010 # print result of adding two binary values in decimal
Note: when gdb prints hex and binary values, it does not print out highorder 0 values. For example, printing the addition of these two 8 bit binary values, results in a 5 digit binary value displayed by gdb:
p/t 0b00010101 + 0b00000010
$1 = 10111
Your answer should include all 8 digits (or the number of digest specified in the problem. For the example, your answer should be represented like this (and should also include showing your work for how you performed the addition):
00010101
+ 00000010
= 00010111
Remember gdb is to help you verify your answers. We want to see how you solved the problem, so show your work in applying the algorithms we discuss in class.
4. Submitting Your Solution
You will submit your solution in gradescope: HW 2: HW 2 submit
In general, for some HW questions you may enter your answer directly in gradescope and for others you may upload an image or .pdf file with your solution in gradescope. Sometimes we give you an option to do either.
4.1. Creating electronic files to upload in gradescope
There are many different ways to create an electronic file version to upload, some include:

Hand write your answer on paper, and upload a photo image from your smartphone or tablet.

Use some software to writeup your answer (googledocs, powerpoint, …) and create a .pdf version to upload (either screenshot or using a save as pdf feature of the software you are using).

print out the .pdf of the assignment, hand write your answers to a problem, take a photo with a smartphone or tablet of your answer to each part and upload it in gradescope.
On exams, you will also do file upload of solutions in gradescope. The most expedient way to do this is by handwriting and image upload, so we recommend you practice that with some of your homework file uploads prior to an exam.
For handwritten answers, make sure your writing is legible. For any image you upload check the uploaded file with your answer and make sure it is readable and includes your full answer. If not, take another photo and try again.