zoukankan      html  css  js  c++  java
  • 常见位操作

    位与:&

    操作:1 & 1 = 1;  1 & 0 = 0;  0 & 0 = 0;

    特点:只有全是1的时候才是1,其他情况都是0.

    总结:任何数和0位与就是0,和1位与没有变化,所以位与常用在清零上(清零用位与)。

    位或:|

    操作:1 | 1 = 1;  1 | 0 = 1;  0 | 0 = 0;

    特点:只有全0的时候才是0,其他情况都是1.

    总结:任何数和1位或就是1,和0位或没有变化,所以位或常用在置1上(置1用位或)。

    位取反:~

    操作:~1 = 0;  ~0 = 1;

    特点:1取反为0,0取反为1.

    位异或:^

    操作:1 ^ 1 = 0;  1 ^ 0 = 1; 0 ^ 1 = 1; 0 ^ 0 = 0;

    特点:相同为0,不同为1.

    总结:任何数和1位异或会取反,和0异或没有变化(特定位要取反就用位异或)。

    左移(<<)和右移(>>)

    操作的时候要考虑有符号数(signed number)和无符号数(unsigned number)。

    对于有符号数:左移的时候右侧补0;右移的时候左侧补符号位(正数符号位为0,则补0;负数符号位为1,则补1).

    对于无符号数:左移的时候右侧补0;右移的时候左侧也是补0.

    注意:我们对寄存器进行赋值的时候用的都是无符号的数

    某一位取反 &= ~

    a &= ~b;

     a ^= 1<<bit;

  • 相关阅读:
    python 函数
    谷歌浏览器安装POSTMAN
    Django提示Unknown database处理方法
    Django 连接Mysql异常处理
    Django输入 中文参数保存异常解决方法
    vscode过滤pyc文件
    Jenkins启动和停止服务
    执行robot framework 的测试用例 命令行pybot使用方式
    Jenkins定时任务
    Jenkins构建Python项目失败
  • 原文地址:https://www.cnblogs.com/Huluwa-Vs-Aoteman/p/9955378.html
Copyright © 2011-2022 走看看