巧用位运算规律 Flags
找规律
(1 ) &1 =1
(1 ) &2 =0
(1 ) &3 =1
(1 ) &4 =0
(1 ) &5 =1
(1 ) &6 =0
(1 ) &7 =1
(1 ) &8 =0
(1 ) &9 =1
(1 ) &10 =0
(1 ) &11 =1
(1 ) &12 =0
(1 ) &13 =1
(1 ) &14 =0
(1 ) &15 =1
(1 ) &16 =0
(1 ) &17 =1
(1 ) &18 =0
(1 ) &19 =1
(1 | 2 ) &1 =1
(1 | 2 ) &2 =2
(1 | 2 ) &3 =3
(1 | 2 ) &4 =0
(1 | 2 ) &5 =1
(1 | 2 ) &6 =2
(1 | 2 ) &7 =3
(1 | 2 ) &8 =0
(1 | 2 ) &9 =1
(1 | 2 ) &10 =2
(1 | 2 ) &11 =3
(1 | 2 ) &12 =0
(1 | 2 ) &13 =1
(1 | 2 ) &14 =2
(1 | 2 ) &15 =3
(1 | 2 ) &16 =0
(1 | 2 ) &17 =1
(1 | 2 ) &18 =2
(1 | 2 ) &19 =3
(1 | 2 | 4 ) &1 =1
(1 | 2 | 4 ) &2 =2
(1 | 2 | 4 ) &3 =3
(1 | 2 | 4 ) &4 =4
(1 | 2 | 4 ) &5 =5
(1 | 2 | 4 ) &6 =6
(1 | 2 | 4 ) &7 =7
(1 | 2 | 4 ) &8 =0
(1 | 2 | 4 ) &9 =1
(1 | 2 | 4 ) &10 =2
(1 | 2 | 4 ) &11 =3
(1 | 2 | 4 ) &12 =4
(1 | 2 | 4 ) &13 =5
(1 | 2 | 4 ) &14 =6
(1 | 2 | 4 ) &15 =7
(1 | 2 | 4 ) &16 =0
(1 | 2 | 4 ) &17 =1
(1 | 2 | 4 ) &18 =2
(1 | 2 | 4 ) &19 =3
(1 | 2 | 4 | 8) &1 =1
(1 | 2 | 4 | 8) &2 =2
(1 | 2 | 4 | 8) &3 =3
(1 | 2 | 4 | 8) &4 =4
(1 | 2 | 4 | 8) &5 =5
(1 | 2 | 4 | 8) &6 =6
(1 | 2 | 4 | 8) &7 =7
(1 | 2 | 4 | 8) &8 =8
(1 | 2 | 4 | 8) &9 =9
(1 | 2 | 4 | 8) &10 =10
(1 | 2 | 4 | 8) &11 =11
(1 | 2 | 4 | 8) &12 =12
(1 | 2 | 4 | 8) &13 =13
(1 | 2 | 4 | 8) &14 =14
(1 | 2 | 4 | 8) &15 =15
(1 | 2 | 4 | 8) &16 =0
(1 | 2 | 4 | 8) &17 =1
(1 | 2 | 4 | 8) &18 =2
(1 | 2 | 4 | 8) &19 =3
找到的规律就是数组 [1、2、4、8] 满足任意一个成员 Xn = 任意多个不同成员异或运算的结果 y([X1-Xn]) & Xn
即 y([X1-Xn]) & Xn =Xn
再看下 这个规律
(1 ) =1
(1 | 2 ) =3
(1 | 2 | 4 ) =7
(1 | 2 | 4 | 8) =15
2 的等比数列
巧用位运算规律 Flags的更多相关文章
- Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range
在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...
- 简简单单学会C#位运算
一.理解位运算 要学会位运算,首先要清楚什么是位运算?程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),位运算就是直接对在内存中的二进制数的每位进行运算操作 二.理解数字进制 上面 ...
- C#枚举中的位运算权限分配浅谈
常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第 ...
- EF架构~为分组添加位运算聚合方法
回到目录 我们知道在Linq里的分组groupby可以对集合中一个或者多个字段进行分组,并对其中一个属性进行聚合,而Linq为我们提供了多种聚合方法,由aver,sum,count等,而在大叔权限体系 ...
- javascript位运算
javascript作为一门高级语言,他尽量让开发人员减少思考底层的硬件工作原理,而将精力集中在逻辑开发的层面.不过,不论这门语言多么高级,我们必须知道数据依然以bits的形式存储,有时候我们会直接与 ...
- C#位运算讲解与示例2
在C#中可以对整型运算对象按位进行逻辑运算.按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位.C#支持的位逻辑运算符如表2.9所示. 运算符号 意 ...
- 关于C/C++中的位运算技巧
本篇文章讲述在学习CSAPP位运算LAB时的一些心得. 移位运算的小技巧 C/C++对于移位运算具有不同的策略,对于无符号数,左右移位为逻辑移位,也就是直接移位:对于有符号数,采用算术移位的方式,即左 ...
- C语言原码反码补码与位运算.
目录: 一.机器数和真值 二.原码,反码和补码的基础概念 三.为什么要使用原码,反码和补码 四.原码,补码,反码再深入 五.数据溢出测试 六.位运算 ...
- POJ 1781 In Danger Joseph环 位运算解法
Joseph环,这次模固定是2.假设不是固定模2,那么一般时间效率是O(n).可是这次由于固定模2,那么能够利用2的特殊性,把时间效率提高到O(1). 规律能够看下图: watermark/2/tex ...
随机推荐
- H3C LMI协议标准
- Vue 语法的一些小问题
设置 sty行内样式 :style="{width:mapWidth,height:mapHeight}" This指向 axios 使用axios 的时候 ,在生命周期函数 ...
- 【u221】分数
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 高考分数刚刚公布.共有n人参加考试,为了便于填报志愿,教育部把所有考生的成绩平均分为m档.保证n是m的 ...
- P1062 差K素数对
题目描述 给你两个数 n 和 k ,请求出所有小于等于 n 的相差为 k 的素数对. 输入格式 两个正整数n,k.1<=k<=n<=10000. 输出格式 所有小于等于n的素数对.每 ...
- 2019-6-5-WPF-隐藏系统窗口菜单
title author date CreateTime categories WPF 隐藏系统窗口菜单 lindexi 2019-06-05 17:26:44 +0800 2019-06-05 17 ...
- linux自旋锁函数
我们已经看到 2 个函数, spin_lock 和 spin_unlock, 可以操作自旋锁. 有其他几个函 数, 然而, 有类似的名子和用途. 我们现在会展示全套. 这个讨论将带我们到一个我们无 法 ...
- H3C 802.1X典型配置举例
- H3C配置Hybrid端口
- vue-router再学习
vue路由: 1:动态路由配置 import Vue from 'vue' import Router from 'vue-router' import Index from '@/view/inde ...
- Python之end关键字使用
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下: a, b = 0, 1 while b < 1000: print(b, end=',') a, b = b, ...