个人单页网站模板2345影视下载官网电视剧
个人单页网站模板,2345影视下载官网电视剧,网站建设资料百度云,猜艺士科技网站建设题目描述#xff1a; 写一个宏#xff0c;可以将一个整数的二进制位的奇数位和偶数位交换。
题目分析#xff1a; 相信大家都可以想到位运算如#xff1a;按位异或#xff0c;按位取反以及和等操作符#xff0c;可是想到这些又能怎么样#xff1f;还是…题目描述 写一个宏可以将一个整数的二进制位的奇数位和偶数位交换。
题目分析 相信大家都可以想到位运算如按位异或按位取反以及和等操作符可是想到这些又能怎么样还是没有思路。别慌咱们要有有已知推未知的能力以及实在想不到可以举个例子咱们现以1为例众所周知数字在系统中存储以32个比特位对吧那1不就是以以下形式存储
00000000 00000000 00000000 0000001 那奇数位与偶数位就换就是2了那不就是扩大了二倍然后你又进行验证又搬出了5
0000000 0000000 0000000 00000101 交换了奇数位与偶数位果然扩大了二倍 然后你大喜过望正准备书写代码仅存的理智告诉你现在还不是时候这是不死心的你又拿出来13
00000000 00000000 00000000 00001101 一交换本以为会和之前一样看到结果后却又饱受打击为什么是14这是为什么为什么 就在你苦恼之时突然间灵光一闪能不能把先确定这个数的奇偶位然后运用位运算符得出答案。 -----------------------------------------TWO THOUSAND LATE----------------------------------------------------- 经过你潜心研究终于得出了一份足以震惊世界的答案于是你迫不及待地把答案公布出去在万众瞩目的目光下你清了清嗓子缓缓说道 交换奇偶位需要先分别拿出奇偶位。既然是宏分别拿出用循环不是很现实那就用这些位的方式来做。奇数位拿出那就是要上010101010101……偶数位拿出就是要上101010101010……对应十六进制分别是555……和aaa……一般我们默认是32位整数4位对应一位16进制就是8个58个a。通过 0x55555555的方式拿出奇数位和 0xaaaaaaa的方式拿出偶数位。奇数位左移一位就到了偶数位上偶数位右移一位就到了奇数位上最后两个数字或起来就完成了交换。 ※这个宏只能完成32位以内的整形要想完成64位的那就将5和a的数量翻倍即可。 你这一份发言虽使他们大受震撼但他们说你口说无凭随后你这他们漫眼疑惑的目光中在编译器敲下了能叫自己高光的代码 代码实现
#include stdio.h
#define SWEAP(n) n (((n0x55555555)1)((n0xaaaaaaaa)1))
int main()
{int n 0;scanf(%d, n);int ret SWEAP(n);printf(%d, ret);return 0;
} 最后你用你这神一般的代码赢得了阵阵掌声赢了一切从此出任CEO迎娶白富美。在你成亲之日觉得日光那么的耀眼突然你发现你这床上你这开眼四望心茫然不由得悲从中来不可断绝。但你有察觉脑海中多了一段代码觉得至少还有所收获重新捡起了生活的信心此文纯属杜撰为了帮助大家理解不要当真 完
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89535.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!