C语言常用基础位操作
来源:互联网 发布:amc分析知乎 编辑:程序博客网 时间:2024/06/02 05:50
1、使用下面的代码将最右边的1改变为0,假如没有1则结果为0(e.g.,01011000=>01010000):
x & (x-1)
此代码可以用来判断一个无符号的整数是否为2的幂,假如x & (x-1)==1,则x为2的幂,否则x不为2的幂
2、相似地,下面的代码可以用来判断一个无符号的整数是否具备2n-1的格式(包括n=0、1)
x & (x+1)
3、下面的代码将隔离最右边的1,假如右边没有1则结果返回0 (e.g., 01011000 =>00001000):
x & (-x)
4、下面的代码将隔离最右边的0,假如右边没有0则结果返回0 (e.g., 10100111 =>00001000):
~x & (x+1)
5、下面的代码都可以用来产生一个掩码,用来保留尾部的0,假如x=0则返回全1字节 (e.g., 01011000 =>00000111):
~x & (x-1) 或 ~(x | -x) 或 (x & -x)-1
6、下面的代码用来产生一个掩码,用来保留最右边的1与尾部所有的0,假如x=0则返回全1字节(e.g., 01011000 =>00001111):
x ^ (x-1)
7、下面的代码用来将最右边的1右边的0全部改为1,假如x=0则返回全1字节(e.g., 01011000 = >01011111):
x | (x-1)
8、下面的代码将最右边的1临近的1取反 (e.g., 01011000 =>01000000):
((x | (x-1))+1) & x
- C语言常用基础位操作
- C语言常用基础位操作
- 嵌入式系统C语言常用位操作
- C语言常用位操作符
- C语言 位操作
- C语言位操作
- C语言位操作
- C语言位操作
- C语言位操作
- C语言位操作
- c语言位操作
- C语言位操作
- c语言位操作
- C语言-位操作
- C语言位操作
- C语言位操作
- C语言位操作
- C语言位操作
- linux下的jdk安装
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Linux下查看系统版本号相关命令
- exit 与return 的区别
- android SQLiteOpenHelper使用示例
- C语言常用基础位操作
- 常见错误集合
- 交叉工具链安装
- IOS越狱开发Hello World
- 使用MediaPlayer和SurfaceView播放视频
- Uva 10596 - Morning Walk 欧拉回路基础水题 并查集实现【uva数据修改,代码已更新】
- hibernate笔记-四大映射
- 大乐必易,大礼必简
- 快速排序