• 【笔记】关于位运算


    位运算是在二进制的基础上所运行的

    主要分为六种运算符:

    一、&(按位与):

    1、概念:

    若有 a & b = c

    将 a 和 b 转换为二进制,并将其每二进制位一 一对应

    若相同位数均为 1 时, c 中对应位数为 1;

    否则为 0 。

    2、例子:

    若存在 9 & 5

    9 的二进制为(00 001 001),5的二进制为(00 000 101)

    那么 9 & 5 = 1(00 000 001)

    3、图解:

    二、|(按位或):

    1、概念:

    若有 a | b = c

    将 a 和 b 转换为二进制,并将其每二进制位一 一对应

    若相同位数只要有至少一个 1 时, c 中对应位数为 1;

    否则为 0 。

    2、例子:

    若存在 9 | 5

    9 的二进制为(00 001 001),5的二进制为(00 000 101)

    那么 9 | 5 = 13( 00 001 101)

    3、图解:

    三、^(按位异或):

    1、概念:

    若有 a ^ b = c

    将 a 和 b 转换为二进制,并将其每二进制位一 一对应

    若相同位数上的数字不相同时, c 中对应位数为 1;

    否则为 0 。

    2、例子:

    若存在 9 ^ 5

    9 的二进制为(00 001 001),5的二进制为(00 000 101)

    那么 9 ^ 5 = 12( 00 001 100)

    3、图解:

    四、~(取反):

    1、概念:

    若有 ~ a = b

    将 a 转换为二进制

    并将其每二进制上的数字转换, 0 转换成 1;

    1 转换成 0,存到 b 中一 一对应 。

    2、例子:

    若存在 ~ 9

    9 的二进制为(00 001 001)

    那么 ~ 9 = 246( 11 110 110)

    3、图解:

    五、<<(左移):

    1、概念:

    若有 a << b = c

    将 a 转换为二进制

    并将其每二进制上的数字向左移 b 位, 高位丢弃;

    低位补 0 ,存到 c 中一 一对应。

    2、例子:

    若存在 9 << 5

    9 的二进制为(00 001 001)

    那么 9 << 5 = 32(00 100 000)

    3、图解:

     

     (每一位向左移 5 位)

    六、>>(右移):

    1、概念:

    若有 a >> b = c

    将 a 转换为二进制

    并将其每二进制上的数字向右移 b 位, 高位补 0;

    低位丢弃 ,存到 c 中一 一对应。

    2、例子:

    若存在 9 >> 3

    9 的二进制为(00 001 001)

    那么 9 >> 3 = 1(00 000 001)

    3、图解:

     (每一位向右移3位)

    PS:

    1、对于有符号数(比如负数),在右移时,符号将一起移动。

    2、当被右移运算的有符号数是正数时,最高位补 0,为负数时,最高位补 1 。

    位运算的一些有用知识:

    下面是由江苏省淮阴中学薛志坚整理的一些常见操作:(来源于一个dalao的博客

     窝 jiao 得很有用,整理下来用博客存上

    再加一条:

    求 lowbit:n & -n(树状数组)

    来自深受 dp 毒害的瑟瑟发抖的小可怜的控诉

    我讨厌 dp

  • 相关阅读:
    <li>标签在ie6下的上下间隔的BUG解决办法
    win7 瘦身 减肥 记录!
    学习系统封装半年经验总结!
    DIV 类似 hover 悬停效果 鼠标移动上去变化
    解决 WIN7 部署 安装驱动包时出现的驱动签名提示 办法!
    Windows 7 瘦身大全 系统减肥 轻松 瘦身 减肥 3个G
    JS 判断 取 当前系统类型 可用来定义某些WIN7系统和XP系统下字体区别
    JS 判断 当前浏览器类型
    EasyBoot常用的命令
    Win7封装保持任务栏锁定项不变的解决方法
  • 原文地址:https://www.cnblogs.com/EiffelA-blog/p/13773044.html
Copyright © 2020-2023  润新知