下面的java程序是什么意思啊? int b = 0; b^0xff
3个回答
展开全部
int b = 0; // 声明并定义整型变量b为0
b^0xff; // 这个表达式的值是255。这个表达式是将变量b(也就是0)和0xff(也就是十进制的255,一个字节)求异或。但是这里没有上下文相关语句,也没赋值,我不知道具体要干什么
// 下面这种用法可以把一个byte数据进行零扩展,而不是符号扩展,也就是说即使b是个负数,也不会高位扩展为1
byte b = ??;
int i = b ^ 0xff;
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
展开全部
原创 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以避免这样错误
的发生。
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以避免这样错误
的发生。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int b = 0; 就是定义个b是0
后面那句话没什么意义,也没有赋值
就是b和这个16进制数ff做异或运算
后面那句话没什么意义,也没有赋值
就是b和这个16进制数ff做异或运算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询