c++位操作符

来源:互联网 发布:河北邮币卡交易软件 编辑:程序博客网 时间:2024/05/20 13:09
一  位操作符
     位操作符使用整型的操作数,将整型看作是二进制位的集合,为每一位提供检验和设置的功能。整型即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.如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。

原创粉丝点击