4的8位二进制值为00000100
8的8位二进制值为00001000
4|8 = 12
00000100 |00001000 = 00001100
为什么会是这样呢?在进行按位或操作时 00000001|00000001=00000001 ;00000001|00000000=1 ;00000000|00000000=00000000
也就是说除了0|0结果是0外,其它运算结果的都是1
所以 00000100 |00001000 = 00001100
也就说上面的 purview = k2|k3 的二进制值结果是 purview =00000100 |00001000 =00001100了
4&8=0
00000100 &00001000 = 00000000
同样为什么会是这样呢?在进行按位与操作时 00000001&00000001=00000001 ;
00000001&00000000=00000000 ;00000000&00000000=00000000
也就是说除了1&1结果是1外,其它运算结果的都是0
所以 00000100 &00001000 = 00000000
/****************************** * 项目 二进制位算 * 描述 权限系统 * 作者 @Sun * 日期 2019-04-29 *******************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp3 { class Program { static int a = 0; //定义小明初始权限 0无权限 static void Main(string[] args) { Console.WriteLine("查询是否有某一权限"); Console.Write("(A & B)输入A值:"); int A = Convert.ToInt32(Console.ReadLine()); Console.Write("(A & B)输入B值:"); int B = Convert.ToInt32(Console.ReadLine()); int C = A & B; Console.WriteLine("(A & B)运算结果:A & B = {0}", C); Console.WriteLine("添加某一权限"); Console.Write("(A1 | B1)输入A1值:"); int A1 = Convert.ToInt32(Console.ReadLine()); Console.Write("(A1 | B1)输入B1值:"); int B1 = Convert.ToInt32(Console.ReadLine()); int C1 = A1 | B1; Console.WriteLine("(A1 | B1)运算结果:A1 & B1 = {0}", C1); Console.WriteLine("删除某一权限"); Console.Write("(A2 &~ B2)输入A2值:"); int A2 = Convert.ToInt32(Console.ReadLine()); Console.Write("(A2 &~ B2)输入B2值:"); int B2 = Convert.ToInt32(Console.ReadLine()); int C2 = A2 &~ B2; Console.WriteLine("(A2 &~ B2)运算结果:A2 &~ B2 = {0}", C2); Console.WriteLine("------------------------------------------"); Console.WriteLine("小明初权限 {0}", a); for (int i = 0; i < 3; i++) { Console.Write("{0}-*- 给小明添加权限 ",i); int a1 = Convert.ToInt32(Console.ReadLine()); a = a1 | a; Console.WriteLine("小明拥有权限 {0}", a); } Console.Write("查看小明是否拥有某一权限"); int a2 = Convert.ToInt32(Console.ReadLine()); if ((a & a2) > 0) { Console.WriteLine("有"); } else { Console.WriteLine("无"); } Console.ReadKey(); } /// <summary> /// 权限枚举 /// 2的N次方 2^n /// </summary> public enum Permission { Read = 1, Add = 2, Update = 4, Delete = 8, 权限1 = 16, 权限2 = 32, 权限3 = 64, 权限4 = 128, 权限5 = 256, 权限6 = 512, } } }
·····
原文:https://www.cnblogs.com/gouhz/p/10793361.html