• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
smartengineer
博客园    首页    新随笔    联系   管理    订阅  订阅
C语言运算符表备忘录
C语言运算符表备忘录
类别 名称 符号 对象数目 运算规则 运算对象 运算结果 优先级别 结合性
强制运算符 圆括号 () 单目 参数表 任何类型 任何类型 15 自左向右
下标运算符 方括号 [] 单目 数组下标 任何类型 任何类型 15 自左向右
成员运算符 圆点 · 单目 结构成员符 任何类型 任何类型 15 自左向右
成员运算符 左箭头 <- 单目 共用成员符 任何类型 任何类型 15 自左向右
算术运算符 正 + 单目 取原值 整型或实型 整型或实型 14 自右向左
算术运算符 负 - 单目 取负值 整型或实型 整型或实型 14 自右向左
算术运算符 加 + 双目 相加取和 整型或实型 整型或实型 12 自左向右
算术运算符 减 - 双目 相减取差 整型或实型 整型或实型 12 自左向右
算术运算符 乘 * 双目 相乘取积 整型或实型 整型或实型 13 自左向右
算术运算符 除 / 双目 相除取整商 整型或实型 整型或实型 13 自左向右
算术运算符 模 % 双目 整除取余 整型 整型 13 自左向右
算术运算符 增1(前缀) ++ 单目 先加1 整字指变数 同左 14 自右向左
算术运算符 增1(后缀) ++ 单目 后加1 整字指变数 同左 14 自右向左
算术运算符 减1(前缀) -- 单目 先减1 整字指变数 同左 14 自右向左
算术运算符 减1(后缀) -- 单目 后减1 整字指变数 同左 14 自右向左
关系运算符 小于 < 双目 真为1假为0 整实和字符 整型逻辑值 10 自左向右
关系运算符 小于或等于 <= 双目 真为1假为0 整实和字符 整型逻辑值 10 自左向右
关系运算符 大于 > 双目 真为1假为0 整实和字符 整型逻辑值 10 自左向右
关系运算符 大于或等于 >= 双目 真为1假为0 整实和字符 整型逻辑值 10 自左向右
关系运算符 等于 = 双目 真为1假为0 整实和字符 整型逻辑值 9 自左向右
关系运算符 不等于 != 双目 真为1假为0 整实和字符 整型逻辑值 9 自左向右
逻辑运算符 逻辑非 ! 单目 逻辑值取反 数值或字符 整型逻辑值 14 自右向左
逻辑运算符 逻辑与 && 双目 有假为假 数值或字符 整型逻辑值 5 自左向右
逻辑运算符 逻辑或 || 双目 有真为真 数值或字符 整型逻辑值 4 自左向右
赋值运算符 赋值 = 双目 等于 任何类型 表达式 2 自右向左
反赋值运算 加赋值 += 双目 和入第一数 数值型 数值型 2 自右向左
反赋值运算 减赋值 -= 双目 差入第一数 数值型 数值型 2 自右向左
反赋值运算 乘赋值 *= 双目 积入第一数 数值型 数值型 2 自右向左
反赋值运算 除赋值 /= 双目 商入第一数 数值型 数值型 2 自右向左
反赋值运算 模赋值 %= 双目 余入第一数 整型 整型 2 自右向左
逗号运算符 逗号 , 双目 分隔表达式 表达式 表达式类型 1 自左向右
条件运算符 条件 ?: 三目 条件判断 表达式 表达式类型 3 自右向左
长度运算符 长度 sizeof 单目 测试长度 说明符/变量 整型 14 无
位运算符 位非 ~ 单目 逻辑位取反 整型 整型 14 自右向左
位运算符 位与 & 双目 有假为假 整型 整型 8 自左向右
位运算符 位或 | 双目 有真为真 整型 整型 6 自左向右
位运算符 按位加 ^ 双目 同假异真 整型 整型 7 自左向右
位移位运算 左移 << 双目 向左移位 整型 整型 11 自左向右
位移位运算 右移 >> 双目 向右移位 整型 整型 11 自左向右
位自反赋值 位与赋值 &= 双目 同反赋值 整型 整型 2 自右向左
位自反赋值 位或赋值 |= 双目 同反赋值 整型 整型 2 自右向左
位自反赋值 按位加赋值 ^= 双目 同反赋值 整型 整型 2 自右向左
位自反赋值 位左移赋值 <<= 双目 同反赋值 整型 整型 2 自右向左
位自反赋值 位右移赋值 >>= 双目 同反赋值 整型 整型 2 自右向左

原文链接:http://i.cn.yahoo.com/gwutf/blog/p_26/

===============================================================================

C语言位运算符的使用

一、按位与运算符&
参与运算的两个量按照对应的位进行与运算,且
0&0→0, 0&1→0, 1&0→0, 1&1→1

利用按位与运算,我们可以方便地实现清零或取一个数的某些位。
例如 取出a的低4位,将b的低4位清零。
0x0F&a 取出a的低4位
0xF0&b 将b的低4位清零
这种方法称为“屏蔽方法”,其中0x0F、0xF0称为屏蔽字。

二、按位或运算符|
参与运算的两个量按照对应位进行或运算,且
0|0→0, 0|1→1, 1|0→1, 1|1→1

利用按位或运算,我们可以方便地实现置位或组合新值。


例如 将整数i(2字节)的低字节全置为1。
0xff|i
例如 将整数a的低字节和整数b的高字节组成一个新值。
先取出a的低字节:0xff&a (或0x00ff&a)
再取出b的高字节:0xff00&b
然后组成新值: 0xff&a|0xff00&b

三、按位异或运算符^
参与运算的两个量按照对应的位进行异或运算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0

此外,一个数与0异或仍保持不变,即a^0=a
一个数与自己异或结果为0,即a^a=0

四、按位取反运算符~
这是位运算符中唯一的单目运算符,即将数的每一位取反(0→1,1→0)。


例如 将整数a的最低位清零
0xfffe&a
对于有的大中型计算机,整型占4个字节,如将上式直接挪用过去,则将丢失a的两个高字节,必须改为
0xfffffffe&a
因此程序通用性降低。若改为下面形式则通用:
~1&a

五、左移运算符<<
将一个数的各二进制位全部左移若干位。左移后右边补入0,左边移出的位舍弃。


例如 若a=3,则b=a<<1,b为6
c=b<<1,c为12
即左移一位相当于乘以2。用这种方式实现乘法运算比其它方式快得多,但只适用于左边没有1被移出的情况。例如
a=0x83,则a<<1 结果为6

六、右移运算符>>
将一个数的各二进制位全部右移若干位。右移后,右边移出的位被舍弃,左边补入的位分两种情况:
(1) 对无符号数,左边补入0
(2) 对有符号数,若符号位为0(正数)则补入0;若符号位为1(负数)则补入1。

posted on 2012-02-15 14:08  smartengineer  阅读(386)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3