c++位操作符

一   位操作符
     位操作符使用整型的操作数,将整型看作是二进制位的集合,为每一位提供检验和设置的功能。整型即char或者int的数据类型,无论有没有short、long、long long、unsigned等限定词,建议使用unsigned整型操作数(位操作数为负数,则如何处理其符号位依赖于机器)。

图片

    移位操作:

    c语言提供一组移位运算,以便向左或者向右移动位的模式。其右操作数是要移动的位。这两种操作将其左操作数的各个位向左或向右移动若干位,从而产生新的值,并丢弃移出去的位。移位运算是从左到右可结合的。

     向左移位:

     x<<k:表示x向左移动k位,丢弃最高的k位,并在右端补k个0。

     向右移位:

     一般而言机器支持两种形式的右移:逻辑右移和算术右移

      x>>k

      逻辑右移:在左端补k个0

      算术右移:在左端补k个最高有效位的值

     c语言标准没有明确定义使用哪种类型的右移。对于无符号数据,右移必须是逻辑的;对于有符号数据(默认声明的整型对象),算数的逻辑的都可以。


二 逻辑运算符 

     c语言提供了一组逻辑运算符||、&&和!。

     逻辑运算认为所有非零的参数都表示TRUE,而参数0表示FALSE。它们返回1或0,分别表述TRUE和FALSE。

     位运算与逻辑运算区别:

     1.按位运算只有在特殊情况下,也就是参数被限制为0或1时,才与逻辑运算有相同的行为。

     2.如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值