深入理解计算机系统 练习题2.23 答案与分析

#include <stdio.h>  
#include "stdafx.h"
#include <iostream>


using namespace std;

int fun1(unsigned word) {
    return (int)((word << 24) >> 24);
}

int fun2(unsigned word) {
    return ((int)(word << 24)) >> 24;
}

int main() {
    unsigned int a1 = 0x00000076;
    unsigned int a2 = 0x87654321;
    unsigned int a3 = 0x000000C9;
    unsigned int a4 = 0xEDCBA987;
    printf("fun1(a1) %x,", fun1(a1));
    printf("fun2(a1) %x\n", fun2(a1));

    printf("fun1(a2) %x,", fun1(a2));
    printf("fun2(a2) %x\n", fun2(a2));

    printf("fun1(a3) %x,", fun1(a3));
    printf("fun2(a3) %x\n", fun2(a3));

    printf("fun1(a4) %x,", fun1(a4));
    printf("fun2(a4) %x\n", fun2(a4));

    system("pause");
}

结果如下
这里写图片描述

w fun1(w) fun2(w)
0x00000076 0x00000076 0x00000076
0x87654321 0x00000021 0x00000021
0x000000C9 0x000000C9 0xffffffC9
0xEDCBA987 0x00000087 0xffffff87

猜你喜欢

转载自blog.csdn.net/ciqingloveless/article/details/82733611