Answer from cs61c-aj (Kevin Li 15855812) for Question 3 For example, let x equal to .75(ten) which is equivalent to 3/4(ten) which in binary is 11 * 2^-2(two) or 1.1 * 2 ^-1(two). 1.0(ten) is 1.0(two). If programmers used 1.0 - x, then machines without a guard digit will do the following: 1.0 - 1.1* 2 ^ -1 == 1.0 - .11 (two) since no guard digit it becomes 1.0 - .1(two) which is .1(two) which then is 1.0 * 2^-1(two) which is .5(ten). So 1.0 - x (ten) where x is .75(ten) yields .5(ten) (clearly off precision). Now if the programmer wrong (.5-x) + .5(ten), then it would be calculated like this: .5(ten) == 1/2(ten) in binary is 1.0 * 2^-1(two). .5(ten) - .75(ten) == 1.0 * 2^-1(two) - 1.1 * 2^-1(two) since everything is aligned no dropped precision occurs. then it yields -.1 * 2^-1(two) which is -1 * 2^-2(two) which is -1/4(ten) which means .5(ten) - .75(ten) = .25(ten) and then add the .5(ten) to it will be the same process which yields the correct precision .25(ten). Clearly without the guard digit if the programmer wrote (0.5-x)+.5 he will get an extra digit of precision in binary.