

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