C语言-关于位运算符的简单笔记

很多系统程序都要求再bit (位)一级进行运算或处理。
位运算原本属于汇编语言的功能,。
C语言也提供了一些类似汇编语言的功能。
位运算,是以二进制位单位进行运算的。
例如:一个char型数据占据8个(二进制)位,t.e.一个byte(字节),则
最右边的二进制位称为第0位,最左边的为最高位(即,符号位)。

位 运 算 符 { 逻 辑 运 算 符 移 位 运 算 符 自 反 赋 值 运 算 符 位运算符\left\{ \begin{array}{rcl} 逻辑运算符\\ 移位运算符\\ 自反赋值运算符\\ \end{array} \right.

位逻辑运算符

  1. ~ 非:对二进制每一位取反计算(~0=1;~1=0)
  2. & 与: 只有对应的两个二进制位均为1时,结果位才为1,否则为0;(通常用于对于某些位置清零,根据对应位为1,才为1的原则,找一个特定数来跟它“按位与”,用来中和它1的位)
  3. | 或: a|b 的意思是 只要有一个为1,结果位就为1. (可以把数据的某些位置变为1,只需要找特定数的相应位置为1即可)
  4. ^ 异或: 当两对应的二进位上的数不相同时,结果为1(可以用来将某些数上的位翻转)

注释:关于数制的转换与存储:
二进制最高位是“符号位” 1表示负数,0为正数。
对于正数:将数转换位二进制;反码、补码 与原码相同。
对于负数:先按照绝对值转化位二进制,最高位为1;它的反码是:将除了最高位之外的所有位 按位取反。补码是将其二进制的反码加1;

位移位运算符

左移(<<) a<<b: 将二进制数a所有位向左移动b个单位,高位溢出即舍弃,低位补0.

右移(>>) a>>b: 将a所有位向右移动b个单位,低位溢出即舍弃,无符号整型数据高位补0(有符号位的数据:符号位为0(正数)时都补0,符号位为1(负数)时补0或1 看计算机系统)

位自反赋值运算符

即,复合赋值运算符(使用位运算符的复合赋值运算)
例如: a&=b =》a=a&b
|=
^=
<<= (>>=)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值