java中位运算_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java中位运算

java中位运算

 2013/8/5 19:08:38  younglibin  程序员俱乐部  我要评论(0)
  • 摘要:今天突然发现,处理数据实在太大,一个long类型占用了太多空间,领导给了建议使用位运算,记录操作数据的id,怎么使用java好几年了,但是这个还是不会,好不容易学了点,赶紧记下,回去好好啃书去。publicvoidyu(){longa=123456789012345678L;//long类型的数据是64为的,分为高位和低位,前4个字节是高位后四个字节是低位,//a右移32位,实际上是指,就是获得了a的前四位的值,longa1=a>>32;//使用0x代表前边有多个0
  • 标签:Java

今天 突然发现 ,处理数据实在太大,一个long类型占用了太多空间,领导给了建议使用位运算,记录操作数据的id,怎么使用java好几年了,但是这个还是不会,好不容易学了点,赶紧记下,回去好好啃书去。

?

public void yu() {

long a = 123456789012345678L;

// long 类型的数据是64为的,分为高位和低位,前4个字节是高位 后四个字节是低位,

// a 右移32位,实际上是指,就是获得了 a 的 前四位的值,

long a1 = a >> 32;

// 使用 0x 代表前边有多个0,具体有几个0 这样解释 : 比如这里 使用的是 0xffffffffL ,这里表示 前边有8个零

// 一个 f 代表 4位 一个字节 ,两个 f代表 8位 代表 2两个字节,这里8个ff 表示4个字节,

// 这里使用的long 类型 ,一共是 8个字节, 8个ff代表4个字节, 那剩余的前四个字节 ,就是用0x来表示,所以这里一共有8个零

// ? ?用 a 与 0xffffffffL 做 ? 与 运算, 如果a中的位数是 零的话 还的零,是 1 ?的话 ?,这里参考 & 运算

long a2 = a & 0xffffffffL;

System.out.println(a);

System.out.println("高位:" + a1 + "\t低位:" + a2);

?

// 将 原来的 移到地位的数据 在左移32 位,到高位,加上原来的低位 就可以得到原始值了

long b1 = a1 << 32;

long b2 = b1 + a2;

System.out.println(b2);

}

?

以上代码运行结果:

初始化:123456789012345678

高位:28744523低位:2788225870

还原:123456789012345678

?

发表评论
用户名: 匿名