byte d = 1;
byte e = (byte) (d | 10000000);
我觉得e 应该是 -1 .
可结果是-127.
对于位操作我还是比较生疏。
byte e = (byte) (d | 10000000);
我觉得e 应该是 -1 .
可结果是-127.
对于位操作我还是比较生疏。
解决方案 »
- swing JFreeChart柱状图 分层显示
- applet java.awt.AWTPermission "createRobot" 权限赋予
- 为什么 总是 java.sql.SQLException: No suitable driver found for jdbc:Cache://localhost:1972/SAMPLES
- 网络聊天系统可以有多少个接口可以实现(象SOCKET)
- 求教:有谁用过eBay SDK进行程序开发?
- 如何使用Class类使得不需要文件的位置,欢迎大家来顶哦!
- 求救:我这个程序怎么扑捉不到鼠标事件
- 问题可真多?(简单)
- 我是新手,帮帮忙?
- 关于JDK1.1.8的问题,请赐教!
- 这种main还能运行?
- 请问有没有JAVA桌面应用程序的打印控件呢
byte d = 1;
byte e = (byte) (d | 10000000);
修改成:
byte d = 1;
byte e = (byte) (d | 0x80); 并且二进制编码为10000001的数值也不是-1,因为负数在程序中以补码形式存放,关于计算补码和源码的方法可以看我BLOG中《Java编程那些事儿》中关于二进制部分的讲述。
short e = (short)(d | 10000000);
System.out.print(e);
结果为:-27007
byte d = 1;
int e = (int)(d | 10000000);
System.out.print(e);
结果为:10000001
2楼应该是正确的