C语言-10、位运算

位运算(C语言按位计算只有十进制、八进制、十六进制无二进制)

1、位运算的操作对象只能是整型(-128-127)或者字符型数据。
C语言提供六种位运算
& 按位与(乘)      | 按位或    ^异或      ~取反      << 左移       >>右移

计算:
非二进制转换成二进制进行计算,算出的结果是二进制,在还原成非二进制(计算中不产生借位和进位)

(1)&计算(全1为1,有0为0)--------按位乘
作用:清零
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
//区别
2 & 5 = 0
2 && 5 = 1
(2)|运算--------按位加
两个相应的二进制位只要有一个1,则他们按位或运算后结果为1
作用:将特定位置1
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
//区别
2 | 5 = 7
2 || 5 = 1
(3)按位异或运算(^)--------相异为1,相同为0
//最高位为0代表正(+)数则原码
//最高位为1代表负(-)数,补码:后面的数按位取反+1
当两个相应位同为1或同为0时,按位异或结果位0,当两个相应位一个是0一个是1,按位异或的结果是1
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

2 ^ 5 = 7
(4)按位取反运算(~)
单目运算符。按位取反0变1,1变0
~1 = 0
~0 = -1  //0按位取反有16个1,最高位为1.为负数,将后面的15个1取反得到0再+1(-1)
对于一个数按位取反得到的值为该数+1后再乘以-1。
(5)按位左移运算(<<)向右补0
//功能:将二进制按位依序左移n位
对一个十进制数左移n位后得到的值位该数乘以2^n的积

2<<4 = 32
(6)按位右移运算(>>)向左消0
//功能:将二进制按位依序右移n位
若该数为一个负数并且不能被2^n整除,则得到的数为商加-1
计算方法:数/2^n        数/2^n+(-1)

   复合赋值运算符:
&=、|=、^=、<<=、>>=   

例题:

//计算表达式
int b = 2;
(b >> 2) / (b >> 1) = 0
main(){

    char x = 040;
    printf("%O\n",x<<1);
}
//预期结果
100

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值