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

  • 时间:
  • 浏览:0
  • 来源:大发5分排列5_极速5分排列3

通过一三个 int字段,来加带多个 标志之后 情况汇报. 一三个 int字段,也能管理多个标记(情况汇报)值.

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

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

像你什儿 ,独立情况汇报(标记)之间相互组合还前要产生新的情况汇报(标记),且每个独立情况汇报(标记)这么true之后 false值的,我们我们还前要使用位域的概念来管理哪些情况汇报.

具体的调用实现 :

A | B : A和B对应的二进制数位都为0时,结果才为0,其他情况汇报为1.

一三个 就会使得,各个情况汇报不易维护和判断,情况汇报太久,情况汇报越繁复,代码会显得冗长难以维护.

当参与的情况汇报(标记)太久时,之后 使用单独的标记变量,就前要生成太久的变量,而用位域,你什儿 独立情况汇报为不管有几块个,都还前要用一三个 变量表示.int类型最多存放3一三个 独立情况汇报

下面我们我们来看具体实现.(简单的模仿Gravity类的一次责功能)

A << B:将A的二进制表示的每一位向左移B位,左边超出的位截掉,右边严重不足的位补0。

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

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

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

它的核心思要我是 将, int 数值看做是 二进制数位表示.之后 有一三个情况汇报就还前要像一三个 0000,用四位二进制表示,每一三个 二进制位都还前要表示你什儿 情况汇报. 或者通过 位运算,来提取或加带标记位.四位对应的组合情况汇报有16个. 而我们我们,只前要通过一三个 int变量就也能管理哪些情况汇报.

通常情况汇报下,之后 多个情况汇报之后 标记相互之间有关联, 如布局方向,上下左右,左上,居中 ... 等我们.我们我们之后 会为每一三个 标记设置一三个 变量.

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

你什儿 情况汇报下, 一三个 标记相互关联,或者能产生新的标记,这么我们我们就前要设置一三个 标记变量,或者这么通过一系列的set办法来转换情况汇报.如

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

大慨相反数 - 1

在Android中,我们我们会一三个 劲用到之后 看多以下一三个 的代码 :

A & B : A和B对应的二进制数位都为1时,结果才为1,其他情况汇报为0.