位运算
细雨青峦
这个作者很懒,什么都没留下…
展开
-
C语言-附加-按位翻转一个unsigned int 类型的数字
示例如下0x00111111 --> 0x88888800===>0b0001 0001 0001 0001 0001 0001 0001 0001 //0x11111111转换后0b1000 1000 1000 1000 1000 1000 1000 1000 //0x88888888将int类型的数的 二进制数,高低位翻转问题如下:将一个unsigned int 类型的数值,第31位 跟 第0位交换,第30位 跟 第1位交换。。。依次类推之前写的:8位二进制数 的原创 2021-10-22 22:00:59 · 435 阅读 · 0 评论 -
交换两个变量的值(三种方式、完整代码)
第一种:建立一个变量 temp,通过temp进行交换(需要新建立一个变量)第二种:位运算符(异或^) (不需要新建立变量)第三种:a=a+b (不需要新建立变量)例如:int a = 10;int b = 20;//建立一个相同类型的变量 temp,通过temp进行交换//需要建立一个变量(必须是跟要交换的数据 相同类型的)int temp = 0;temp = a;a = b;b = temp;//位与操作void swap(int &a, i...原创 2021-06-30 21:50:30 · 9541 阅读 · 0 评论 -
移位运算符 实现 二进制数的 高低位翻转(完整逻辑代码)
理论基础:>> :右在这里插入代码片移<< :左移& :只有都是1才是1 ==> 1与任何数 都是任何数 | :有1就是1 ==> 0或任何数 都是任何数逻辑先交换相邻的数然后 再交换相邻的两位最后交换相邻的四个数功能实现交换相邻位奇数位 右移1位;偶数位 左移1位===> 然后 进行 | 运算) 奇数位:通过 A 与 1010 1010(0xaa) 进行 与(&)运算 //这是提取奇数位 ==> (a&原创 2021-06-19 22:48:43 · 2429 阅读 · 0 评论 -
输入一个数,判断这个数的二进制有几个0,几个1(完整代码)
思路按位与1 进行 &运算(都是1 才是1),比较一次,移位一次,可以(左)移1的位置,也可以(右)移num(输入的数)右移num(注意,右移符号位补符号位,故设定无符号的整形)原创 2021-06-07 21:51:26 · 1256 阅读 · 0 评论