【C语言练习题】二进制位模式左右翻转输出

举报
王建峰 发表于 2021/11/19 02:28:04 2021/11/19
【摘要】 《C与指针》5.3题   问题 实现一个函数 reverse_bits 将变量value的二进制位模式从左到右变换一下后的值返回。 在32位机器上25这个值包含下列各位:  00000000000000000000000000011001  翻转后: 10011000000000000000...

《C与指针》5.3题

 

问题

实现一个函数 reverse_bits 将变量value的二进制位模式从左到右变换一下后的值返回。

在32位机器上25这个值包含下列各位: 
00000000000000000000000000011001 
翻转后:
10011000000000000000000000000000 

 

代码


  
  1. //reverse_bits.c
  2. #include <stdio.h>
  3. unsigned int reverse_bits( unsigned int value )
  4. {
  5. unsigned int answer;
  6. unsigned int i;
  7. answer = 0;
  8. for( i = 1; i != 0; i <<= 1 )
  9. {//answer左移预留一个空位,value最后一位决定这个空位填充1还是0
  10. //将value右移,下一个位
  11. //循环次数就是类型的长度
  12. answer <<= 1;
  13. if( value & 1 )
  14. {
  15. answer |= 1;
  16. }
  17. value >>= 1;
  18. }
  19. return answer;
  20. }
  21. void main(void)
  22. {
  23. unsigned int num = 0xfe;
  24. printf( ">>%x\n", reverse_bits(num));
  25. }

 

演示

文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/feit2417/article/details/85229162

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。