加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

9位运算

发布时间:2020-12-14 03:23:42 所属栏目:大数据 来源:网络整理
导读:异或运算:^ -- 两个变量,按照bit位比较,同位置 bit位相等 则结果为 0, 不相等,则结果为1 任意数 x x^x = 0; x^(~x) = 0xffffffff x^0 = x; x^0xffffffff = ~x ? 或运算:|?-- 把两个变量, 按照bit位比较,同位置的bit位 有一个 为 1 ,则结果 为 1,只

异或运算:^ --> 两个变量,按照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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读