zoukankan      html  css  js  c++  java
  • 9位运算

    异或运算:^ --> 两个变量,按照bit位比较,同位置 bit位相等 则结果为 0, 不相等,则结果为1

    任意数 x   x^x = 0; x^(~x) = 0xffffffff
          x^0 = x; x^0xffffffff = ~x

    或运算:| --> 把两个变量, 按照bit位比较,同位置的bit位 有一个 为 1 ,则结果 为 1,只有两个值都为 0 的情况,结果才 为0

    与运算:& --> 把两个变量, 按照bit位比较,同位置的bit位  有一个为 0, 则结果为 0,只有两个值都为 1 的情况,结果才为1

    事实上:|  和 || 很类似,只是说 | 是按照bit位一位位运算, &  和 && .............


    教室里面有 32 盏灯, 我们怎么表示 这些灯的 打开关闭状态 ?
    -- 使用 32 个变量吗 ?
    -- 关闭第三个灯,打开其他所有灯?

    可以使用 1 个 int 来表示 32 个灯的开关状态:每个 bit位表示 1盏灯 (0关,1开)
    if (a[5] == 0) a[5] = 1; else a[5] = 0;

    比如说,原来32 个灯 开关状态是 x
    我们操作 x ----》 x = ~(1 << 29)


    假如我们想打开 第 5 盏灯 (其他灯保持原状态) x |= (1<<27)
    --> 把第5个bit位置位1,其他bit位不变

    假如我们想关闭 第 5 盏灯 (其他灯保持原状态) x &= ~(1<<27)
    --> 把第5个bit位置位 0,其他bit位不变

    假如,我们想修改第5盏灯状态 (其他灯保存原状态) x ^= (1<<27)
    --> 把第5个bit位取反

    假如我们想 获取第 5 盏灯的状态? --> x & (1<<27)
    --> 结果为 0 表示关闭,非0表示打开
    --> (这个非0值, 就是 1<<27)

    #define LED_1 1
    #define LED_2 2
    #define LED_3 4
    #defien LED_4 8
    ......(10, 20, 40, 80, ....)

    int led_stat

    判断第 N 个灯状态 --》 led_stat & LED_N

  • 相关阅读:
    paxos算法
    List
    es资料汇总
    尚硅谷Kafka
    lostach安装配置
    zookeeper安装
    zookeeper配置详解
    C# 微信企业付款给个人之相关配置
    JS--正则表达式验证
    uniapp小程序--自定义分享标题
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/9215967.html
Copyright © 2011-2022 走看看