博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言习题三
阅读量:4570 次
发布时间:2019-06-08

本文共 1344 字,大约阅读时间需要 4 分钟。

题目:请编写函数 unsigned int reverse_bits(unsigned int value); 这个函数的返回值是把value的二进制位模式从左到右变换一下后的值。例如,在32位机器上,25这个值包含下列各个位: 0000 0000 0000 0000 0000 0000 0001 1001 函数的返回值应该是2550 136 832,它的二进制位是: 1001 1000 0000 0000 0000 0000 0000 0000 下面有两种方法解决,两种都用到了移位操作,但第二种更精辟些。 代码如下:
1 #include 
2 #include
3 #include
4 #include
5 6 unsigned int reverse_bit(unsigned int value) 7 { 8 unsigned int sum = 0; 9 int i = 0;10 int bit = 0;11 for (i = 0; i <= 31; i++)12 {13 bit = value & 1;14 sum += bit * pow(2, (31-i)); //pow(i,j)表示i^j; 15 value = value >> 1;16 } 17 return sum;18 }19 unsigned int reverse_bits(unsigned int value)20 {21 22 unsigned int answer;23 unsigned int i;24 25 answer = 0;26 /*27 **只要i不是0就继续进行,这就使循环与机器字长无关,从而避免了可移植性问题28 */29 for (i = 1; i != 0; i <<= 1) //控制循环次数30 {31 answer <<= 1; //answer左移32 if (value & 1)33 {34 answer |= 1;35 }36 value >>= 1; //value右移,一位一位进行比较37 }38 return answer; 39 }40 int main()41 {42 printf("%u\n", reverse_bit(25));//reverse_bit的调用43 printf("%u\n", reverse_bits(25));//reverse_bits的调用44 return 0;45 }

 

 

转载于:https://www.cnblogs.com/3120931037cnk/p/7647923.html

你可能感兴趣的文章
Asp.Net webconfig中使用configSections的用法
查看>>
mysql 二进制日志
查看>>
阻止putty变成inactive
查看>>
TP框架代码学习 学习记录 3.2.3
查看>>
doc文档生成带目录的pdf文件方法
查看>>
js数组,在遍历中删除元素(用 for (var i in arr)是无效的 )
查看>>
通过前端上传图片等文件的方法
查看>>
在 OC 中调用 Swift 代码
查看>>
Android仿腾讯应用宝 应用市场,下载界面, 有了进展button
查看>>
安卓|五大逆向软件下载
查看>>
5 OK6410裸机调试(不用Jlink)
查看>>
“模板”学习笔记(5)-----编译器在处理函数模板的时候都干了啥
查看>>
教你用shell写CGI程序
查看>>
窗口 对话框 Pop Dialog 示例
查看>>
ubuntu(centos) server安装vmware tools
查看>>
数据结构之最大不重复串
查看>>
为什么要配置sdk-tools/platform-toools?
查看>>
自己动手开发更好用的markdown编辑器-07(扩展语法)
查看>>
maven dependency:tree中反斜杠的含义
查看>>
队列的循环队列
查看>>