CSAPP 第二章 课程作业
2.58
typedef unsigned char *byte_pointer;
int is_little_endian(int x = 1)
{
    byte_pointer y = (byte_pointer)&x;
    return !!y[0];
}```
## 2.62
```cpp
int int_shifts_are_arithmetic()
{
    int x = -1;
    int y = (x << 1) >> 1;
    return x == y;
}
2.74
int tsub_ok(int x, int y)
{
    if(y == -y && y != 0)
        return x > 0;
    y = -y;
    int sum = x + y;
    bool pos_over = x >= 0 && y >= 0 && sum < 0;
    bool neg_over = x < 0 && y < 0 && sum >= 0;
    return !(pos_over || neg_over);
}
2.77
A
\(x << 4 + x\)
B
\(x - x << 3\)
C
\(x << 6 - x << 2\)
D
\(x << 4 - x << 7\)
2.85
A
E = 2, M = 1.11, f = 11, V = 7.0
B
E = n, M = 1.[1]···, f = [1]···, V = \(2^{n+1} - 1\)
C
E = \(2^{k-1}-2\), M = 1, f = 0, V = \(2^{2^{k-1}-2}\)
2.91
A
11.0010010000111111011011
B
11.[001]···

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号