黑马程序员技术交流社区

标题: Java中一个字节占8位,是什么决定的? [打印本页]

作者: linweiwen    时间: 2014-4-5 13:24
标题: Java中一个字节占8位,是什么决定的?
本帖最后由 linweiwen 于 2014-4-6 21:30 编辑

我查了一下资料,其他语言是由编译器决定的,
但Java好像没有编译器这样的东西,只是JVM用编译命令将java源文件转为.class这样的二进制字节码文件,
那是不是说在Java中一个字节占8位是由JVM决定的呢?固定不变的呢?
作者: Peach2014    时间: 2014-4-5 13:36
一个字节占8位是由系统决定的!规定就是这样,就好像1M=1024KB一样!
作者: linweiwen    时间: 2014-4-5 13:50
Peach2014 发表于 2014-4-5 13:36
一个字节占8位是由系统决定的!规定就是这样,就好像1M=1024KB一样!

你这个说法太笼统了,
我就是想知道这个系统是什么系统,
既然Java有跨平台性,这个决定的是否就是JVM呢?
作者: Peach2014    时间: 2014-4-6 13:49
linweiwen 发表于 2014-4-5 13:50
你这个说法太笼统了,
我就是想知道这个系统是什么系统,
既然Java有跨平台性,这个决定的是否就是JVM呢 ...

所有的系统,无论是linux、windows、ios等等,他们统一规定一个字节就是8位。所以java不需要对这一点进行处理。
作者: xyqjay    时间: 2014-4-6 15:24

计算机底层决定的。设计出厂都是按照这个规定, 就好像所有的计算机底层都只认0和1一样。由若干个位组成一个"字节"(byte).字节由多少个位组成,取决于计算机的自身结构.通常,微型计算机的CPU多用8位组成一个字节,用以表示一个字符的代码.构成一个字节的8个位被看作一个整体.字节(Byte)是存储信息的基本单位.

1B(Byte)=8b(bit)
1KB=1024B
1MB=1024KB
1GB=1024MB
自己百度一下就知道了。 还有,这个是规定出来的东西,没有必要深究。就好像我们约定一个常量的值是那么多就是那么多。完全没有必要深究。难道你还要去问,为什么计算机底层只认0和1???因为工程师这么设计的
作者: ilvsoft    时间: 2014-4-6 15:56
linweiwen 发表于 2014-4-5 13:50
你这个说法太笼统了,
我就是想知道这个系统是什么系统,
既然Java有跨平台性,这个决定的是否就是JVM呢 ...

不是JVM决定的,把一个字节占8位比喻成吃饭付钱,把JVM比喻成吃货,饭店是系统,那么不管吃货到哪里吃饭都要吃饭付钱的吧,这个和吃货本身没关系,就好比1大于0一个道理
作者: linweiwen    时间: 2014-4-6 18:40
xyqjay 发表于 2014-4-6 15:24
计算机底层决定的。设计出厂都是按照这个规定, 就好像所有的计算机底层都只认0和1一样。由若干个位组成一 ...

谢谢你的解答,
那这个跟我们平时说的32位系统,
64位系统有什么关系?
还是两者不是一回事?
作者: xyqjay    时间: 2014-4-6 21:04
linweiwen 发表于 2014-4-6 18:40
谢谢你的解答,
那这个跟我们平时说的32位系统,
64位系统有什么关系?

不是一回事。 这个系统的32位和64位,也没有必要深究,除非你要学汇编和反汇编。最早的是8位CPU,也就是一次处理8位的数据,后来是16位,再后来32 ,64位。所以64位的系统要对应64位的CPU和64位的应用,满足三个条件才可以达到64位的效果。,这个你也是没有必要知道的。
作者: linweiwen    时间: 2014-4-6 21:30
xyqjay 发表于 2014-4-6 21:04
不是一回事。 这个系统的32位和64位,也没有必要深究,除非你要学汇编和反汇编。最早的是8位CPU,也就是 ...

哎,就是傻傻分不清楚。
虽然是知道什么一个字节占8位这些,
但每次想起都有点混,还是谢谢你。:)




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