zoukankan      html  css  js  c++  java
  • “位运算”在实际项目中的应用,保证你能学到东西!

    如果你还是不太懂位运算,请看我的文章:那些年我们一起遗忘的位运算!

    下面是我在这次项目中学习到的,我眼中的位运算的应用!主要是实现 通知的3个操作:

     1.  置顶

     2.  设为首页

     3.  同时为 “置顶”+ “设为首页”

    效果如图:

    我们要想简便的进行位运算,我们可以直接进行如下枚举定义,以2的次方定义,应为他们的值很特殊:

    数      二进制值

    1   1
    2     10
    4       100
    8     1000
    16     10000
    32     100000
    64     1000000
    128   10000000

     /// <summary>
        /// 通知类型
        /// </summary>
        public enum NoticeType
        {
            /// <summary>
            /// 普通
            /// </summary>
            [Description("普通")]
            Normal = 1,
            /// <summary>
            /// 置顶
            /// </summary>
            [Description("置顶")]
            Top = 2,
            /// <summary>
            /// 设置首页
            /// </summary>
            [Description("设置首页")]
            Home = 4,
        }

    我们就可以很方便的接受参数来进行位运算的操作,代码如下:

            /// <summary>
            /// 置顶及设置为首页
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            [Role]
            public ActionResult Workshop_NoticeSet(int id, int typeFlag)
            {
                bool res = false;
                Workshop_Notice entity = workshopManager.GetWorkshop_Notice(i => i.WorkshopNoticeID == id);
                if (entity != null)
                {
                    switch ((NoticeType)typeFlag)
                    {
                        case NoticeType.Home:
                            if ((entity.TypeFlag & (int)NoticeType.Home) > 0)
                                entity.TypeFlag = entity.TypeFlag ^ (int)NoticeType.Home; //取消置顶
                            else
                                entity.TypeFlag = entity.TypeFlag | (int)NoticeType.Home; //置顶
                            break;
                        case NoticeType.Top:
                            if ((entity.TypeFlag & (int)NoticeType.Top) > 0)
                                entity.TypeFlag = entity.TypeFlag ^ (int)NoticeType.Top;  //取消设为首页
                            else
                                entity.TypeFlag = entity.TypeFlag | (int)NoticeType.Top; //设为首页
                            break;
                    }
                    if (workshopManager.EditWorkshop_Notice(i => new Workshop_Notice
                    {
                        TypeFlag = entity.TypeFlag,
                        WorkshopNoticeID = entity.WorkshopNoticeID,
                    }).IsComplete)
                        res = true;
                }
                return Content(res.ToString());
            }

     您的支持是我最大的动力,如果你觉得还可以,请您给个”推荐“!

  • 相关阅读:
    [SDOI2008]递归数列
    [SCOI2008]奖励关
    [SCOI2010]幸运数字
    [ZJOI2007]矩阵游戏
    [HAOI2006]旅行
    [ZJOI2008]泡泡堂
    [BZOJ1800][Ahoi2009]fly 飞行棋
    [POJ2288]Islands and Bridges
    [LUOGU] 3959 宝藏
    [BZOJ]1029: [JSOI2007]建筑抢修
  • 原文地址:https://www.cnblogs.com/Kummy/p/2936795.html
Copyright © 2011-2022 走看看