中国十大网站排名,html5手机网站模板下载,化妆品网站建设网站,东莞建网站找哪里我们这里是利用按位与来计算的
我们可以想想怎么保留偶数上的位#xff1f;我们可以利用0x55555555按位与上这个数就保留了偶数
我们知道#xff0c;16进制0x55555555转换为二进制就是0x01010101010101010101010101010101
我们知道#xff0c;二进制每一位#xff0c;如…我们这里是利用按位与来计算的
我们可以想想怎么保留偶数上的位我们可以利用0x55555555按位与上这个数就保留了偶数
我们知道16进制0x55555555转换为二进制就是0x01010101010101010101010101010101
我们知道二进制每一位如果这个位是0按位与1还是0如果这个数是1按位与1就是1
然后我们把计算的结果1这样偶数上的位就在奇数位上了 奇数位一样的保留方法我们可以利用0xaaaaaaaa按位与上这个数保留奇数
16进制0xaaaaaaaa转换为二进制就是0x10101010101010101010101010101010
我们把结果1这样奇数位就在偶数位上了
#define SWAP(num) num ((num0x55555555)1)((num0xaaaaaaaa)1)
int main()
{int num 10;//00000000000000000000000000001010 -10// 其奇偶位交换后得 //00000000000000000000000000000101 -5SWAP(num);printf(%d, num);return 0;
}