查看“︁03-进阶基础/06-位运算与三目运算符”︁的源代码
←
03-进阶基础/06-位运算与三目运算符
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 位运算 == 位运算是直接对二进制位进行操作。 {| class="wikitable" ! 运算符 !! 名称 !! 说明 |- | <code>&</code> | 按位与 | 两位都为 <math>1</math> 结果为 <math>1</math> |- | <code>|</code> | 按位或 | 两位有一个为 <math>1</math> 结果为 <math>1</math> |- | <code>^</code> | 按位异或 | 两位不同结果为 <math>1</math> |- | <code>~</code> | 按位取反 | <math>0</math> 变 <math>1</math>,<math>1</math> 变 <math>0</math> |- | <code><<</code> | 左移 | 所有位左移,右边补 <math>0</math> |- | <code>>></code> | 右移 | 所有位右移,左边补符号位 |} === 常用技巧 === <syntaxhighlight lang="cpp"> // 判断奇偶 if (x & 1) 奇数 if (!(x & 1)) 偶数 // 乘 2 / 除 2 x << 1 // x * 2 x >> 1 // x / 2 // 2 的 k 次方 1 << k // 2^k // 取第 k 位(从 0 开始) (x >> k) & 1 // 将第 k 位设为 1 x |= (1 << k) // 将第 k 位设为 0 x &= ~(1 << k) // 交换两个数(不借助临时变量) a ^= b; b ^= a; a ^= b; // 判断是否为 2 的幂 x > 0 && (x & (x - 1)) == 0 </syntaxhighlight> === 位运算法优先级 === 位运算符的优先级比较低,建议多加小括号。 常见优先级:<code>+ -</code> > <code><< >></code> > <code>> < == !=</code> > <code>&</code> > <code>^</code> > <code>|</code> > <code>&&</code> > <code>||</code> == 三目运算符 == <syntaxhighlight lang="cpp"> 条件 ? 表达式1 : 表达式2 </syntaxhighlight> 条件为真返回表达式 <math>1</math> 的值,否则返回表达式 <math>2</math> 的值。 <syntaxhighlight lang="cpp"> int max = (a > b) ? a : b; int abs = (x >= 0) ? x : -x; cout << (score >= 60 ? "及格" : "不及格"); </syntaxhighlight> 三目运算符可以嵌套,但可读性会降低: <syntaxhighlight lang="cpp"> // 求三个数的最大值 int max3 = a > b ? (a > c ? a : c) : (b > c ? b : c); </syntaxhighlight> [[Category:进阶基础]] [[Category:三三文档]]
返回
03-进阶基础/06-位运算与三目运算符
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息