常用位运算

来源:互联网 发布:宏观经济数据主要指标 编辑:程序博客网 时间:2024/05/01 05:14

基础知识

按位与运算
按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:
00001001 (9的二进制补码)
&00000101 (5的二进制补码)
00000001 (1的二进制补码)
可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 ,保留低八位,可作a&255运算( 255 的二进制数为0000000011111111)。
【例12.1】
在MIDP1.0中,我们只能侦测按键一次是否被按下

这里我们可以自己做一个类似MIDP2.0 的方法

先储存设置位

public static final int GAME_A = 1 << Canvas.GAME_A;
public static final int GAME_B = 1 << Canvas.GAME_B;

这理我们将按键的状态储存到对应得位中。在应用的过程中,在Canvas调用KeyPressed() 的时候

 protected void keyPressed(int keyCode) {
   // 将改键对应的位设置为1
   this.keyState = this.keyState | (1 << this.getGameAction(keyCode));
   // 该键放开状态为0
   KeyReleaseState = KeyReleaseState & ~(1 << this.getGameAction(keyCode));
  }

这样我们可以利用getKeyStatus()方法(自己定义返回keyState)
判断KeyState&GAME_A 是否为0来判断此键是否被按下了。当GAME_B同时按下时,同样可以应用。