📅  最后修改于: 2023-12-03 15:28:45.858000             🧑  作者: Mango
这道题目是 GATE-IT-2004 的第81题,需要对给定的 32 位无符号整数进行操作,然后输出操作后的结果。
题目给出了一个函数 unsigned int fun(unsigned int x)
的原型,在这个函数中对一个给定的 32 位无符号整数进行以下操作:
题目要求实现这个函数,并输出某个给定的数经过这个函数操作后得到的结果。
首先,题目要求我们把给定的 32 位无符号整数分成两部分,高 8 位和低 24 位,然后输出高 8 位。这个比较简单,可以使用按位与和按位右移运算符来实现。
其次,题目还要求我们对原数进行一系列位移和或运算操作。这个操作涉及到了位运算技巧,需要一点点的分析才能理解。
按照题目要求,我们需要:
### 题目描述
对于一个无符号整数 x,写出函数 fun,使得该函数返回的值为:
1. 取出 x 的前 8 位,作为输出结果。
2. 再把 x 左移 8 位,把 x 的低 24 位移到高 8 位,然后把所得到的结果再右移 24 位。
3. 对 x 和上一步所得到的值进行或运算,所得到的结果即为 fun(x) 的返回值。
### 输入格式
一个无符号整数 x(0 <= x <= 2^32 - 1)。
### 输出格式
fun(x) 的返回值。
### 函数声明
unsigned int fun(unsigned int x);
### 样例
输入:
```plain
102030405
输出:
102
unsigned int fun(unsigned int x) {
unsigned int a, b;
a = x >> 24; // 取出 x 的高 8 位
b = x << 8; // 把 x 的高 8 位移到低 8 位
b = b >> 24; // 把 x 的低 24 位移到高 8 位
return a | b; // 把 x 的高 8 位和低 24 位合并到一起
}