• 關於位運算


    來自https://www.luogu.org/blog/chengni5673/er-jin-zhi-yu-wei-yun-suan    轉侵刪

    一··左移<<  右移>>

    “将一个二进制数向左或向右移动 k 位,就是给一个数乘 2^k 或者除 2^k(末尾1不计)。

    二·取反~

    “对于 int 来说, ~ x=-x-1

    三·與and &

    “对于两个二进制数的每一位,如果这一位都是 1 ,那么这一位为 1 ,否则这一位为 0

    if(x&1) 那麼x是奇數

    四·或or |

    “如果这两个数此位有一个 1 那么此位就是 1,否则为0

    • x & y<=x
    • x | y>=x

    五·異或xor  ^

    “对于两个二进制数的每一位,如果相同则为 0 ,否则为 1

    显而易见的是一个数异或他自己肯定是得 0 的

    对于一个形如 2*n 的数 x, x ^ 1 =x+1,而对于一个形如 2*n+1 的数 x, x ^ 1 =x-1

    如果 x ^ y=z 那么 y ^ z=x, x ^ z=y

    "关于位运算的优先级,大致按下面排序

    加减运算 >> 移位运算 >> 比较大小运算 >> 与运算 >> 异或运算 >> 或运算"

    優化

    交換兩個整數: x=x^y, y=y^x, x=x^y

  • 相关阅读:
    细说:Http协议 篇
    连接池
    实践
    事务
    一、Jdbc 入门
    ES6之路第一篇:let、const
    vue2饿了吗之路第二篇:登录
    RabbitMQ(三)——简单模式
    RabbitMQ(二)——模式类型
    RabbitMQ(一)——简介
  • 原文地址:https://www.cnblogs.com/azureholmes/p/9913241.html
Copyright © 2020-2023  润新知