public class wrenwren
{
public static void main(String argv[])
{
byte b = 0;
int i = 5000;
b = (byte)i;
//System.out.println(Integer.toBinaryString(i));
System.out.println(b);
}
}结果为什么是-120呢? 5000的后8位是1000 1000 应该是-8吧?
{
public static void main(String argv[])
{
byte b = 0;
int i = 5000;
b = (byte)i;
//System.out.println(Integer.toBinaryString(i));
System.out.println(b);
}
}结果为什么是-120呢? 5000的后8位是1000 1000 应该是-8吧?
解决方案 »
- 具有网络功能的随手画例程如何实现呢?
- 各位大大看看这段代码有啥错的地方我找不到,我买的书里的代码运行时出错
- 使用jdk自带的jndi函数访问ldap出现几十个连接。十万火急,请高手们出招
- 高分请教unix系统下窗口前端显示的问题
- 用java画的曲线为什么在IE5.0是能打印出来,而在IE6.0和IE5.5时就不行(急!)
- 在windows下哪中Java开发工具比较好?
- tomcat运行不行,是在编写完之后,view窗口中不能预览?
- [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
- 为什么我编译时用不了JAVAC 参与者有分
- 大家来聊聊:JBUILDER5比JUILDER4在那方面改进了!?
- 字符串反向截取,我的程序怎么又错呢??????
- 配置tomcat5.5的问题
byte from -128 to 127 in java
已经溢出了
100000000 - self
为什么10001000是136 放byte范围就是-120呢??
高位为1的binary value在java中约定为十进制负数
转换规则为取反加一(binary operation)
136 - 256 = -120(it's a convention)
11111000才是-8解释一下:java是用补码来表示负数的,
8 = 00001000, 那么-8的反码就是11110111,-8补码就是反码+1 = 11111000
而120是01111000,同理-120 = 10001000