java位运算的一个问题 int value = 0x00000000;value |= (byte) 0x80;预计的value值应该是0x00000080,但是结果变为了0xffffff80这是为什么呢?环境为jdk1.6 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 byte的关系吧byte是8位的,0x80第一位是1,扩展成int前面就都补1了 因为 byte 的 0x80 是 -128 啊。把 byte -128 与 int 类型运算,会转为 int 的 -128,因此结果就是那个了。 byte型扩展为int型应该数值不会变化吧?前面全部补1的话值就改变了 16进制 -> 2进制0x80 0000 0000 0000 0000 0000 0000 1000 0000转byte,截取低8位后为-128: 1000 0000位操作会自动转成int,但数值不变,仍然是-128,变成: 1111 1111 1111 1111 1111 1111 1000 0000所以..... 哪位高手能给我推荐下好的oracle入门教程吗 java.sql.SQLException: [Microsoft][ODBC Microsoft Access 驱动程序] FROM 子句语法错误 急求周三前最简单JAVA程序一个 那个地方的错误呢?? 强烈提问,忘大虾们给指点迷津 考验大家的技术(月饼) java类如何随操作系统启动,路过有分(散分)! 急需OSGi Technology高人帮忙(有偿) 这段代码错在哪里,new 了一下也不行,在线等待 Java中有没有类似于全局变量这样的东西?具体问题见内容: 初学者问题 Boolean boolean 区别
byte是8位的,0x80第一位是1,扩展成int前面就都补1了
0x80 0000 0000 0000 0000 0000 0000 1000 0000
转byte,截取低8位后为-128:
1000 0000
位操作会自动转成int,但数值不变,仍然是-128,变成:
1111 1111 1111 1111 1111 1111 1000 0000所以.....