关于位运算,网上有挺多好的博客介绍过,我就不多解释了

这里只记录一个小例子,是在理解位运算时候写的,帮助自己加深一下印象,做个笔记mark一下

具体场景

摇骰子游戏

1每个骰子有6个点,1-3为小,4-6为大,[1,3,5]为单,[2,4,6]为双

2每次扔3个骰子

问题:如果把每场结果设成实体对象,那么该如何设计呢?

其他的属性就不过多纠结,主要在3个骰子这里

不管是把骰子设成复杂对象,或者是把每个骰子的大小单双分开记下来,都会显得很麻烦

如果使用位运算,就会变得简单许多,代码如下:

  public class GameResult
{
//第一个骰子
public int FirstDiceValue { get; set; }
public Mode FirstDiceMode { get { return SetModel(FirstDiceValue); } }
//第二个骰子
public int SecondDiceValue { get; set; }
public Mode SecondDiceMode { get { return SetModel(SecondDiceValue); } }
//第三个骰子
public int ThirdDiceValue { get; set; }
public Mode ThirdDiceMode { get { return SetModel(ThirdDiceValue); } } private Mode SetModel(int value)
{
Mode Size;
Mode EvenOdd;
if (value >= ) Size = Mode.大;
else Size = Mode.小;
if (value % == ) EvenOdd = Mode.双;
else EvenOdd = Mode.单;
return Size | EvenOdd;
}
} /// <summary>
/// 骰子的大小和单双结果枚举
/// </summary>
[Flags]
public enum Mode
{
//1111 大小单双
双 = ,//
单 = ,//
小 = ,//
大 = //
}

打印一下查看结果:

     class Program
{
static void Main(string[] args)
{ GameResult resule = new GameResult()
{
FirstDiceValue = ,
SecondDiceValue = ,
ThirdDiceValue =
};
Console.WriteLine(resule.FirstDiceMode);
Console.WriteLine(resule.SecondDiceMode);
Console.WriteLine(resule.ThirdDiceMode); Console.ReadKey();
}
}

更正:上面写判断的时候用了[(x>=3 )=> 大],所以3也成了大...

出自:博客园-半路独行

原文地址:https://www.cnblogs.com/banluduxing/p/9300153.html

本文出自于http://www.cnblogs.com/banluduxing 转载请注明出处。

c#位运算小例子笔记的更多相关文章

  1. C# 关于位运算的学习笔记

    一.理解什么是位运算 程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),简单来说位运算就是直接对在内存中的二进制数的每位进行运算操作. 二.学习前先了解一下有哪些运算,运算符都怎么 ...

  2. Java小知识点学习--------数组和位运算小知识点

    位运算符: >>>无符号右移运算符,无符号右移的规则和右移的规则同样,仅仅是在填充时,无论原来是正数还是负数都用0来补充. 数组: arr1=arr2;  此时两个数组变量都会同一时 ...

  3. c语言小技巧:C语言学习笔记之位运算求余

    我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不 允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注 意:该方法只对除数是2的N次方幂时才有效 ...

  4. Vue2.x源码学习笔记-从一个小例子查看vm实例生命周期

    学习任何一门框架,都不可能一股脑儿的从入口代码从上到下,把代码看完, 这样其实是很枯燥的,我想也很少有人这么干,或者这么干着干着可能干不下去了. 因为肯定很无聊. 我们先从一个最最简单的小例子,来查看 ...

  5. Python笔记_第一篇_面向过程_第一部分_3.进制、位运算、编码

    通过对内存这一个部分的讲解,对编程会有一个相对深入的认识.数据结构是整个内存的一个重要内容,那么关于数据结构这方面的问题还需要对进制.位运算.编码这三个方面再进行阐述一下.前面说将的数据结构是从逻辑上 ...

  6. hdu3006 状态压缩+位运算+hash(小想法题)

    题意:        给了n个集合,问你这n个集合可以组合出多少种集合,可以自己,也可以两个,也可以三个....也可以n个集合组在一起. 思路:       是个小想法题目,要用到二进制压缩,位运算, ...

  7. C#学习笔记-----C#枚举中的位运算权限分配

    一.基础知识 什么是位运算? 用二进制来计算,1&2:这就是位运算,其实它是将0001与0010做位预算   得到的结果是 0011,也就是3  2.位预算有多少种?(我们就将几种我们权限中会 ...

  8. Matlab位运算笔记

    本文为转载其他地方的文章; MATLAB函数 1.matlab函数bitset 设置数的某一位二进制位为1. <Simulink与信号处理> 使用方法 C = bitset(A,bit) ...

  9. php学习笔记位运算

    位运算 源码:用二进制表示一个数,这个码就是源码. 比如2====00000000 00000000 0000000 00000010 正数的反码 源码 补码都一样 负数的源码是符号位取反.第一个位  ...

随机推荐

  1. Java的三种多线程

    项目结构 继承Thread类 /* * Thread类实现了Runnable接口 */ public class MyThread extends Thread { @Override public ...

  2. SweetAlert2 弹窗

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. discuz模板介绍

    1.discuz目录下template为模板目录 模板套系 discuz每套模板,支持不同的风格,而多个风格组成一套套系. 推荐使用复制的方法创建新的风格 (*默认的公共页面静态资源,存储在discu ...

  4. ecplise导入工程出现乱码的解决方案

    eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的.一般默认都是UTF-8或者GBK,当从外部导入的一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同 ...

  5. Electronic Trading[z]

    This article is to discuss the operation model between Fund Managers(Client) and Broker Firms. They ...

  6. DB2数据库常用命令数据库学习

    DB2数据库常用命令数据库学习你可以用 get snapshot for locks on XXX 看是那个表锁了,再从相关的操作去查原因吧 db2pd -d 库名 -locks和db2pd -d 库 ...

  7. 在winform嵌入外部应用程序

    应朋友要求,需要将一个第三方应用程序嵌入到本程序WinForm窗口,以前在VB6时代做过类似的功能,其原理就是利用Windows API中FindWindow函数找到第三方应用程序句柄,再利用SetP ...

  8. 品味性能之道<三>:方法论

    自顶向下的性能优化方法论 系统优化是包括系统设计.开发.产品上线.平台优化的全过程,不同阶段的优化工作对全系统所带来的效益是不同的.理想的性能优化论应该采用自顶向下的优化方法,即在项目设计.开发和上线 ...

  9. 2018.09.25 poj3070 Fibonacci(矩阵快速幂)

    传送门 矩阵快速幂板题,写一道来练练手. 这一次在poj做题总算没忘了改万能库. 代码: #include<iostream> #include<cstdio> #define ...

  10. 微信小程序 获取用户openid

    1,可以在小程序app.js入口文件中放入登录代码 wx.login({ success: res => { // 登录注册接口 if (res.code) { // 调用服务端登录接口,发送 ...