作业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);




