当前位置: 代码迷 >> Java相关 >> 新手求助-几个问题
  详细解决方案

新手求助-几个问题

热度:735   发布时间:2008-09-29 09:12:24.0
新手求助-几个问题
byte b=(byte)0xf1
byte e=(byte)((b&0xff)>>4)

请问e的值是几多?书上说是0x0f,为什么?

还有0xff的0是用数字还是字母?

麻烦说明,先谢谢了
----------------解决方案--------------------------------------------------------
0x表示的是十六进制

0是数字0



byte b=(byte)0xf1
byte e=(byte)((b&0xff)>>4)


首先b&0xff的结果是0xfx(x表示一个数,这里无所谓多少)
然后右移4位就把上面那个x给移调了,就变成0x0f了

[[it] 本帖最后由 freish 于 2008-9-29 09:36 编辑 [/it]]
----------------解决方案--------------------------------------------------------
谢谢你的回答
----------------解决方案--------------------------------------------------------
不过“>>”不是会保留符号位吗?

(byte)0xf1=11110001
      0xff=11111111
      结果=11110001
       >>4=11111111(不是吗?结果的高位不是1吗?因该会复制4个1吗?能不能解释过程)
----------------解决方案--------------------------------------------------------
火车就要开了,我得走了,等会的人给你解答


如果结果是那样证明那个十六进制数的最高位不符号位
----------------解决方案--------------------------------------------------------