枚举进行位运算 枚举组合z
枚举进行位运算--枚举组合
public enum MyEnum
{
MyEnum1 = , //0x1
MyEnum2 = << , //0x2
MyEnum3 = << , //0x4
MyEnum4 = << , //0x8
MyEnum5 = << , //0x10
MyEnum6 = << , //0x20
MyEnum7 = << //0x40
}
用位移运算方便的获取多个枚举的组合变量:
MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2;
myEnum |= myEnum | MyEnum.MyEnum3;
或在组合中删除其中一项枚举:
myEnum ^= MyEnum.MyEnum1;
myEnum &= ~MyEnum.MyEnum2;
需要判断是否包含某一枚举值时,可以使用以下方法判断:
(curMyEnum & MyEnum.Enum1) >
如果需要将枚举类型的变量视为一组标志,需要在枚举定义前加上Flages特性:
[System.Flags]
public enum MyEnum { }
具有Flags特性的枚举组合在调用实例方法ToString()时,会得到对应的枚举值组合,而非对应的枚举数:
//对于以上枚举,如果不带Flags特性
Console.WriteLine(MyEnum.MyEnum1 | MyEnum.MyEnum2); //3
//对于以上枚举,如果带上Flags特性
Console.WriteLine(MyEnum.MyEnum1 | MyEnum.MyEnum2); //MyEnum1, MyEnum2
※特性Flags一般和枚举组合一起使用,便于查看枚举中的枚举值的组合;
枚举进行位运算 枚举组合z的更多相关文章
- 在C#中对枚举进行位运算--枚举组合
由于枚举的基础类型类型为基本的数值类型,支持位运算,因此可以使用一个值表示多个枚举的组合,在定义枚举时需要指定枚举数为2的幂指数方便进行位运算,即枚举数为1,2,4,8…,或1,1<<1, ...
- POJ 1753 位运算+枚举
题意: 给出4*4的棋盘,只有黑棋和白棋,问你最少几步可以使棋子的颜色一样. 游戏规则是:如果翻动一个棋子,则该棋子上下左右的棋子也会翻一面,棋子正反面颜色相反. 思路: 都是暴搜枚举. 第一种方法: ...
- hdu 1882 Strange Billboard(位运算+枚举)
http://acm.hdu.edu.cn/showproblem.php?pid=1882 感觉非常不错的一道题. 给一个n*m(1<=n,m<=16)的矩阵,每一个格子都有黑白两面,当 ...
- POJ1222熄灯问题【位运算+枚举】
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14231 Accepted: 8 ...
- codeforces 922 B. Magic Forest(枚举、位运算(异或))
题目链接:点击打开链接 Imp is in a magic forest, where xorangles grow (wut?) A xorangle of order n is such a no ...
- POJ 2965 The Pilots Brothers' refrigerator 位运算枚举
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 151 ...
- HDU 6186 CS Course【前后缀位运算枚举/线段树】
[前后缀枚举] #include<cstdio> #include<string> #include<cstdlib> #include<cmath> ...
- 【bzoj2073】【[POI2004]PRZ】位运算枚举子集的特技
(上不了p站我要死了) Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一 ...
- poj 2965 The Pilots Brothers' refrigerator枚举(bfs+位运算)
//题目:http://poj.org/problem?id=2965//题意:电冰箱有16个把手,每个把手两种状态(开‘-’或关‘+’),只有在所有把手都打开时,门才开,输入数据是个4*4的矩阵,因 ...
随机推荐
- TypeScript学习笔记 (一)基础特性
一. 字符串新特性 1. 多行字符串 var str = ``; 2. 字符串模板 var world = "world"; var str = `hello ${world}`; ...
- Python_os模块
os模块:可以处理文件和目录,是Python系统和操作系统进行交互的一个接口 os模块常用方法: os.getcwd(): 获取当前工作目录,(即当前Python脚本工作的目录路径) os.chdir ...
- bat处理快速安装jdk脚本
- Codeforces 746F Music in Car
Music in Car 用两个Set维护一下尺取的过程. #include<bits/stdc++.h> #define LL long long #define fi first #d ...
- ELK 使用4-Kafka + zookpeer
一.zookpeer操作 1.登录 /application/elk/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181 2.查看结构 ls / 上面的显示结果 ...
- docker 安装配置
1. 安装docker 环境是ubuntu 14.04 参照: https://help.aliyun.com/document_detail/60742.html # step 1: 安装必要的一 ...
- Codeforces 1009G Allowed Letters FMT,二分图,二分图匹配,霍尔定理
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1009G.html 题目传送门 - CF1009G 题意 给定一个长度为 $n$ 的字符串 $s$ .并给定 ...
- Codeforces 870C Maximum splitting (贪心+找规律)
<题目链接> 题目大意: 给定数字n,让你将其分成合数相加的形式,问你最多能够将其分成几个合数相加. 解题分析: 因为要将其分成合数相加的个数最多,所以自然是尽可能地将其分成尽可能小的合数 ...
- 从URL输入到页面展现到底发生什么
前言 打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解! 从URL输入到页面展现 总体来说分为以下几个过程: DNS ...
- 有关python 函数参数
# def foo(x):# print(x)### foo(1)# foo('a')# foo({'a':2}) #形参与实参:# def foo(x,y): #x=1,y=2# return x+ ...