首页 > 其他 > 详细

& 运算的实际运用

时间:2021-04-29 22:31:25      阅读:21      评论:0      收藏:0      [点我收藏+]

背景:

  订单有很多标识,比如是否特价/是否公司担保/是否预留等等标记。然后在某段逻辑需要判断的时候,可能判断某单是不是具备某个标识,或者哪几个标识。

  但是不想用集合来存,于是用一个表标识来存。

  eg:

   所有的标志都用2的多少次幂的值表示,比如 1 [0001]-特价    2 [0010]-公司担保  4[0100]  8[1000] 等等,特征就是换成二进制后,除了某个位上为1,其他都为零。

   假如要判断某个标志是否含有特价标识,这个时候外部传来的提前 set 的表示 3 [0011].  则公式为 (3 & 1) == 1 返回true,说明3这个标志含有特价标志

   假如还要判断这个标志是否含有公司担保标志,这个是同样 3 [0011].  则公式为 (3 & 2) == 2 返回 true,说明3这个标志含有公司担保标志. [1+2 = 3,所以两个标志都含有]

 

 

原理:(a & b) == b

 首先一个前提就是b 是2的n次幂的值,因为这样就能保障二进制只有一个1,其他都是零,这样就导致前面的&运算,把其他位都干成了0,只有a所在的那个位是1 的话,才能得到它本身

 ,这样的话再== 。就知道a 有没有包含b 了。

& 运算的实际运用

原文:https://www.cnblogs.com/junbaba/p/14719291.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!