关于JAVA 中的位移运算>>

代码:charcData='志';bytebData[]=newbyte[2];bData[0]=(byte)(0xff&(cData>>8));bData[1]=(by... 代码:char cData = '志';
byte bData[ ] = new byte[2];
bData[0] = (byte)(0xff&(cData>>8));
bData[1] = (byte)(0xff&(cData>>0));
不明白上述代码的含义,特此请教
展开
 我来答
匿名用户
2010-09-19
展开全部
char的范围是0~65535.用2进制表示,就是0000 0000 0000 0000到1111 1111 1111 1111
byte的范围是-128~127.用2进制表示,就是1000 0000到0111 1111.
看到了么,一个char要用两个byte才能存下来。

例如假设cData=1101 0101 0001 0001:
>>8就是说,右移8个bit,二进制的.右移8bit,那个1101 0101就往右移动8位。因为首位是1,所以前面全部补1,得到1111 1111 1101 0101.然而这时候,想得到的是1101 0101,而不需要前面那8个1,所以用0xff&来处理。0xff就是0000 0000 1111 1111,&就是这个bit在两个操作数都是1的情况下使答案bit为1,就是是取后8个bit。所以0000 0000 1111 1111 & 1111 1111 1101 0101=0000 0000 1101 0101.这样,就取得了cData的前8bit.存入bData[0].
>>0无运算,只是写着好看的。0xff&cData直接取后8bit,这个例子里,就是说0000 0000 1111 1111 & 1101 0101 0001 0001=0000 0000 0001 0001.这样,就取得了cData的后8bit.存入bData[1].
athlomes
2010-09-19 · 超过13用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:16.7万
展开全部
就是分别得到cData 的高8位和低8位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式