Java使用位域进行多标记(状态)管理

  • 时间:
  • 浏览:1
  • 来源:uu快3计划_uu快3官方_单双

它的核心思你会是 将, int 数值看做是 二进制数位表示.怎么让有六个状况就都还可否 像另一六个 0000,用四位二进制表示,每一六个二进制位都都还可否 表示一种生活生活状况. 怎么让通过 位运算,来提取或加带标记位.四位对应的组合状况有16个. 而大伙儿,只还要通过一六个int变量就要能管理有有哪些状况.

具体的调用实现 :

通常状况下,怎么让多个状况怎么让标记相互之间有关联, 如布局方向,上下左右,左上,居中 ... 等.大伙儿怎么让会为每一六个标记设置一六个变量.

除了位非(~)是一元操作符外,其它的不是二元操作符。

通过一六个 int字段,来加带多个 标志怎么让状况. 一六个int字段,要能管理多个标记(状况)值.

这样 神奇的操作怎么实现的呢? 答案可是 通过位运算来实现.

像你这名 ,独立状况(标记)之间相互组合都还可否 产生新的状况(标记),且每个独立状况(标记)要能true怎么让false值的,大伙儿都还可否 使用位域的概念来管理有有哪些状况.

你这名 状况下, 有一六个标记相互关联,怎么让能 产生新的标记,这样 大伙儿就还要设置一六个标记变量,怎么让要能通过一系列的set依据来转换状况.如

A << B:将A的二进制表示的每一位向左移B位,左边超出的位截掉,右边存在问题的位补0。

在取值范围内,移动一位大约乘2.

java中提供的基础位运算符有 与(&),或(|),非(~),异或(^),左移<<,

右移(>>)无符号右移(>>>).

在Android中,大伙儿会老会 用到怎么让想看 以下另一六个的代码 :

A & B : A和B对应的二进制数位都为1时,结果才为1,这名 状况为0.

下面只介绍本文中,使用到的位操作

~A : 将a的二进制表示每一位进行取反操作,0变1,1变0.

大约相反数 - 1

另一六个就会使得,各个状况不易维护和判断,状况不多,状况越比较复杂,代码会显得冗长难以维护.

A | B : A和B对应的二进制数位都为0时,结果才为0,这名 状况为1.

当参与的状况(标记)不多时,怎么让使用单独的标记变量,就还要生成不多的变量,而用位域,你这名 独立状况为不管有有有几个个,都都还可否 用一六个变量表示.int类型最多存放3一六个独立状况

下面大伙儿来看具体实现.(简单的模仿Gravity类的一累积功能)