数值怎么的变化???

fbib1540_cn 2002-11-23 04:07:33
如下函数:
PRIVATE unsigned int reverse_data(unsigned int data)
{
unsigned int tmp = 0, i;
for(i = 0; i < 4; i++) {
tmp <<= 8;
tmp |= data & 0xff;
data >>= 8;
}
return tmp;
}
请各位大虾指点一下!!!最好能给data赋个数值(如00001234或其他),然后给出变量tmp和data在四次循环中变化值!!!大虾们,一定要写出四次循环的变化值,不然小弟我可理解不了,谢谢了!!!!
...全文
34 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ToUpdate 2002-11-24
  • 打赏
  • 举报
回复
UP
GZCompiler 2002-11-23
  • 打赏
  • 举报
回复
为运算符及运算规则:
<< :左移运算符,如tmp=0x00000011,tmp<<4后,tmp=0x00110000。
>> : 右移运算符,与上类似,方向相反。
& : 与 运算符,规则如下:
1 & 1 = 1
1 & 0 = 0
0 & 0 = 0
| :或 运算符,规则如下:
1 | 1 = 1
1 | 0 = 1
0 | 0 = 0
GZCompiler 2002-11-23
  • 打赏
  • 举报
回复
初始data=0x00001234;

第一次循环:
执行完循环第一行:tmp=0,data=4660;
执行完循环第二行:tmp=52,data=4660;
执行完循环第三行:tmp=52,data=18;
第二次循环:
执行完循环第一行:tmp=13312,data=18;
执行完循环第二行:tmp=13330,data=18;
执行完循环第三行:tmp=13330,data=0;
第三次循环:
执行完循环第一行:tmp=3412480,data=0;
执行完循环第二行:tmp=3412480,data=0;
执行完循环第三行:tmp=3412480,data=0;
第四次循环:
执行完循环第一行:tmp=873594880,data=0;
执行完循环第二行:tmp=873594880,data=0;
执行完循环第三行:tmp=873594880,data=0;

数据均以十进制显示。
dragoncircle 2002-11-23
  • 打赏
  • 举报
回复
为何不自己运行试试?很简单的嘛,没运行环境吗?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧