byte类型的最小值为什么是-128而非-127? 假设不管java中是怎么存储的,单以首位1表示负号,其余位表示实际的正数数字,则其余位最大为7个1,111 1111,这不正是127?加上前面的负号应该为-127呀。怎么搞的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 one's complement里有负0,不过一般都是用two's complement 不管是 byte、short、int、long,都存在楼主说的问题以字节为例,因为如果最高位作符号位,那么就会出现“正0 ”和“负0 ”:0000 00001000 0000而其实0是不分正负的,但是上面的表示方法明显是重复了 但1楼的哥们说,1 0000000 表示-128,这个好像不对,-128到底是怎么表示的.昨天查了core java,对这些根本没有讲解. 1000 0000 减 1 取反是 1000 0000 即 128,因此 byte 的 1000 0000 为 -128 这个不是 java 的问题,而是计算机内部的数值表示方法,就算你用C语言也是这么回事一般来说,计算机科学表示数值的方法有:原码、反码和补码,现在的计算机用补码存储整数数值原码,就是用二进制表示的原始编码,反码,就是除符号位外,其它位取反补码,正数的被码等于原码,负数的被码等于反码加1你可以用下面的代码来验证1楼说的是否正确:byte b = (byte)-128;int x = 0x01;for(int i=7; i>=0; i--) { int a = b >> i; if((a & x) == 0) System.out.print(0); else System.out.print(1);} 1000 0000确实是-0!!计算机内部“硬性”规定了-0表示负数的最大值! 这个大学计算机教程了有说的!看看这个:http://www.flatws.cn/article/program/c/2010-06-09/6679.html JNDI是什么? java 这样 去掉 换行,怎么实现? java截取一篇文章的第一个段落 急!请高手帮忙解决一个java调用Runtime执行命令行问题? Applet刷新问题,在线等 谁有javaMUD游戏的源代码啊,输入文字,游戏就会出来一些选项。 高分求解!请问类似tomcat服务器的启动关闭是怎样实现? 听说国外用JAVA用得较多,有没有国外关于JAVA较好的论坛??? 请解释一个多态父母转子类的问题 在子类中去super去调用父类构造函数,这是父类构造函数的this是指子类对象吗 在java中如何操作大量字符,才不致于OutOfMemoryError 问卷调查答案预览问题
0000 0000
1000 0000而其实0是不分正负的,但是上面的表示方法明显是重复了
原码,就是用二进制表示的原始编码,
反码,就是除符号位外,其它位取反
补码,正数的被码等于原码,负数的被码等于反码加1你可以用下面的代码来验证1楼说的是否正确:
byte b = (byte)-128;
int x = 0x01;
for(int i=7; i>=0; i--) {
int a = b >> i;
if((a & x) == 0)
System.out.print(0);
else
System.out.print(1);
}
计算机内部“硬性”规定了-0表示负数的最大值! 这个大学计算机教程了有说的!
看看这个:
http://www.flatws.cn/article/program/c/2010-06-09/6679.html