注册 登录
编程论坛 J2EE论坛

位移方面的请教

那夜雪 发布于 2007-04-25 09:38, 741 次点击
这个是我在书上看到的,不太理解所以请教高手给解释一下。
public void appendInt(int data) {
byte[] intBuf = new byte[4];
intBuf[3] = (byte) (data & 0xff);
intBuf[2] = (byte) ((data >>> 8) & 0xff);
intBuf[1] = (byte) ((data >>> 16) & 0xff);
intBuf[0] = (byte) ((data >>> 24) & 0xff);
‘&’这个单位运算符的作用是什么,为什么用个ff,我觉得用一个f不可以吗?手上没有相应的资料了,请教高手给点指点,多谢了。
8 回复
#2
黄袖标2007-04-25 09:48
0xff应该是个16进制的数,移位这种东西我觉得不是很常用,楼主看书的话,跳过这里吧
#3
那夜雪2007-04-25 09:55
搞不懂我就更要搞了,这样才有进步啊,0x是表示16进制这个我知道,但是一个字节只能表示一个十六进制的数字吧(我自己想的,可能不是这样的),所以用两个ff来做这'&'我就有点不明白了,两个ff要8位吧,大学的书让我给卖了,所以没有资料可查了,所以请教高手给点启示。
#4
黄袖标2007-04-25 09:57
我也没有多少了解这方面的东西,我也是猜测,java是unicode编码,是两个字节,所以是ff,不知道对不对.
#5
那夜雪2007-04-25 10:03

多谢楼上兄弟热心回帖,我再上网查查资料,版主能否解答一下这方面的知识?不胜感激!

#6
那夜雪2007-04-25 10:43

是我把byte的位数搞错了,我现在明白了。

#7
黄袖标2007-04-25 10:50
8个字节?java是unicode,是16字节,所以是ff ??
#8
那夜雪2007-04-25 13:13

不明白ls的意思。一个int是4个byte,一个byte是8位,一个0x是4位,这个跟unicode有什么关系?不是很明白,请把问题说得清楚一点。

#9
黄袖标2007-04-25 14:23

我现在也搞不清楚一个ox在java中占几位了。..

1