下面的java程序是什么意思啊? int b = 0; b^0xff

 我来答
百度网友9293a0a
2011-03-23 · TA获得超过273个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:149万
展开全部
int b = 0; // 声明并定义整型变量b为0
b^0xff; // 这个表达式的值是255。这个表达式是将变量b(也就是0)和0xff(也就是十进制的255,一个字节)求异或。但是这里没有上下文相关语句,也没赋值,我不知道具体要干什么

// 下面这种用法可以把一个byte数据进行零扩展,而不是符号扩展,也就是说即使b是个负数,也不会高位扩展为1
byte b = ??;
int i = b ^ 0xff;
追问
我想问一下
int b = 1;
int c = b^0xff;
那么c的只是多少呢?谢谢啦
追答
我给你详细将将吧
^异或的意思是,两个数的对应2进制位相同则对应结果位为0,不同则对应结果位为1

b: 0000 0000 0000 0000 0000 0000 0000 0001
0xff: 0000 0000 0000 0000 0000 0000 1111 1111
c: 0000 0000 0000 0000 0000 0000 1111 1110

所以结果是254
huanliancjy
2011-03-23 · TA获得超过2314个赞
知道小有建树答主
回答量:647
采纳率:0%
帮助的人:962万
展开全部
原创 java.lang.Integer.toHexString(b[n] & 0XFF)中0XFF使用的必要性 收藏

byte[] b = {1,2,20,108};

String stmp = java.lang.Integer.toHexString(b[n] & 0XFF)

在32位的电脑中数字都是以32格式存放的,如果是一个byte(8位)类型的数字,他的高24位里面都是随机数字,低8位

才是实际的数据。java.lang.Integer.toHexString() 方法的参数是int(32位)类型,如果输入一个byte(8位)类型的数字,这个

方法会把这个数字的高24为也看作有效位,这就必然导致错误,使用& 0XFF操作,可以把高24位置0以避免这样错误

的发生。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幽冥神者
2011-03-23 · TA获得超过3213个赞
知道大有可为答主
回答量:1953
采纳率:50%
帮助的人:1779万
展开全部
int b = 0; 就是定义个b是0
后面那句话没什么意义,也没有赋值
就是b和这个16进制数ff做异或运算
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式