作业1
2.9
A.
颜色(RGB) | 补(RGB) |
---|---|
黑色(000) | 白色(111) |
蓝色(001) | 黄色(110) |
绿色(010) | 红紫色(101) |
蓝绿色(011) | 红色(100) |
红色(100) | 蓝绿色(011) |
红紫色(101) | 绿色(010) |
黄色(110) | 蓝色(001) |
白色(111) | 黑色(000) |
B.
蓝色 | 绿色 = 蓝绿色(001|010=011)
黄色 & 蓝绿色 = 绿色(110&011=010)
红色 ^ 红紫色 = 蓝色(100^101=001)
2.14
x = 0x66 = 0110 0110(2)
y = 0x39 = 0011 1001(2)
x & y = 0010 0000(2) = 0x20
x | y = 0111 1111(2) = 0x7f
~x | ~y = 1101 1111(2) = 0xdf
表达式 | 值 | 表达式 | 值 |
---|---|---|---|
x & y | 0x20 | x && y | 0x01 |
x | y | 0x7f | x || y | 0x01 |
-x | -y | 0xdf | !x || !y | 0x00 |
x & !y | 0x00 | x && -y | 0x01 |
2.15
!(x^y),x和y的每一位都相同时返回1.
2.18
0x2e0=736
-0x58=-88
0x28=40
-0x30=-48
0x78=120
0x88=136
0x1f8=504
0x8=8
0xc0=192
-0x48=-72
2.21
表达式 | 类型 | 求值 |
---|---|---|
-2147483647-1 == 2147483648U | 无符号 | 1 |
-2147483647-1 < 2147483647 | 有符号 | 1 |
-2147483647-1U < 2147483647 | 无符号 | 0 |
-2147483647-1 < -2147483647 | 有符号 | 1 |
-2147483647-1U < -2147483647 | 无符号 | 1 |
2.23
A.
w | fun1(w) | fun2(w) |
---|---|---|
0x00000076 | 118 | 118 |
0x87654321 | 33 | 33 |
0x000000C9 | 201 | -55 |
0xEDCBA987 | 135 | -121 |
B.
fun1从w的低8位中提取值得到一个0~255的整数。fun2从w的低8位中提取值再进行符号扩展,得到一个 -128~127的整数。
2.25
当 length
为 0
时,由于 lenght
为无符号数, length-1
为 UMax
,i <= length-1
为 1
,循环体会被执行,于是会出现 a[1]
等,发生内存错误。
2.26
A. 当 s 比 t 短时,会返回1
B. 当 s 比 t 短时, strlen(s) - strlen(t)
结果为负数,但由于是无符号数,会被认为是很大的一个正数,于是返回1
C. 将 return strlen(s) - strlen(t) > 0;
改为 return strlen(s) > strlen(t);