黑马程序员技术交流社区

标题: byte字节不太懂哦 [打印本页]

作者: mengxiang1993    时间: 2015-3-4 19:42
标题: byte字节不太懂哦
     字节到底是什么东西?是二进制数吧。。理解的很浅显。
  1. System.out.println(Integer.toBinaryString(255));
  2.                 byte b=(byte)255;
  3.                 System.out.println(b);
复制代码
输出结果:

  1. 11111111
  2. -1
复制代码
-1不太理解,大家来帮忙指点下,谢谢。



作者: ko889910    时间: 2015-3-4 20:11
255默认是int型 占32位 用二进制表示为0000 0000 0000 0000 0000 0000 1111 1111
byte占8位 int强转byte 取低8位 即1111 1111 计算机将8位当作byte类型存储 1为符号位
即为负数 负数在计算中以补码存储(什么是补码自己去百度吧) 要想求出补码的原码采用取反
+1的方式(符号位不取反)即1000 0001转换成十进制就是-1

作者: macover    时间: 2015-3-4 20:20
计算机底层的东西,不好理解啊
作者: mengxiang1993    时间: 2015-3-4 21:12
ko889910 发表于 2015-3-4 20:11
255默认是int型 占32位 用二进制表示为0000 0000 0000 0000 0000 0000 1111 1111
byte占8位 int强转byte 取 ...

谢谢,明白了。还有个问题就是byte都是有符号数,对吧
作者: ko889910    时间: 2015-3-4 21:18
mengxiang1993 发表于 2015-3-4 21:12
谢谢,明白了。还有个问题就是byte都是有符号数,对吧

java中貌似不支持unsigned的关键字 所以都是有符号数
作者: z47057554    时间: 2015-3-5 10:49
本帖最后由 z47057554 于 2015-3-5 10:52 编辑

二楼正解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2