• C语言 位操作


    定义

    位操作提高程序运行效率,减少除法和取模的运算。在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。

    左移

    后空缺自动补0

    右移

    分为逻辑右移和算数右移

    逻辑右移

    不管什么类型,空缺自动补0

    算数右移

    若是无符号数,则空缺补0,若是负数,则空缺补1

    位运算符

    位运算符操作的都是整型的数据

    <<:在一定范围内,每向左移1位,就相当于*2

    >>:在一定范围内,每向右移1位,就相当于/2

    左移运算符

    左移运算符是一个计算机用语。用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。

    计算方法

    左移表达式的位 result = expression1 << expression2

    参数 result,任何变量。

    expression1,任何表达式。

    expression2,任何表达式。

    说明:<<运算符把expression1的所有位向左移expression2指定的位数

    左移

    运算规则

    按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

    语法格式

    需要移位的数字 << 移位的次数

    数学意义

    在数字没有溢出的前提下,对于正数负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

    带符号右移 >>

    运算规则

    按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

    语法格式

    需要移位的数字 >> 移位的次数

    数学意义

    右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商哈,余 数就不要了。

    无符号右移 >>>

    运算规则

    二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。 其他结构和>>相似。

    按位逻辑运算符

    二进制反码或按位取反:~

    一元运算符~把1变为0,把0变为1

    ~a不会改变a的值,但是该运算符确实创建了一个可以使用或者赋值的新值

    char a=2;

    char b=~a; //a的值不会被改变

    a=~a; //改变了a的值

    printf("%d",~a);

    a的值为00000010,~a的值为11111101

    按位与:& 都为1,结果为1

    二元运算符&通过逐位比较两个运算对象,生成一个新值。对于每一位,只有两个运算对象中相应的位都为1时,结果才是1

    &=

    val &=0377;+

    val=val & 0377; //二者等价

    按位或:| 至少一个为1,结果为1

    二元运算符|,通过逐个比较两个运算对象,生成一个新值。对于每个位,如果两个运算对象中相应的位为1,结果就为真

    |=

    val |= 0377;

    val=val | 0377; //二者等价

    按位异或:^ 只有一个为1,结果为1

    二元运算符^逐位比较两个运算对象。对于每一位,如果两个运算对象中相应的位一个为1,但不是两个都为1,结果为1

    ^=

    val ^=0377;

    val=val^0377; //二者等价

    应用

    掩码:按位与 &

    打开位(设置位) :|

    关闭位(清空位):&和~

    切换位 :^

    检查位的值

  • 相关阅读:
    Ribbon 负载均衡
    前端 html 中的 meta 标签有哪些用处?
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高考信息发布平台cnj61
    stm32G0 启动
    【GPU编程】Visual Studio创建基于GPU编程的项目
    Python 运行代码
    [C# 循环跳转]-C# 中的 while/do-while/for/foreach 循环结构以及 break/continue 跳转语句
    解决mysql报错this is incompatible with DISTINCT
    原生js实现todolist案例
    Java剑指Offer青蛙跳台阶问题
  • 原文地址:https://blog.csdn.net/weixin_65951505/article/details/133722231