乐趣区

关于java:Java为什么占用四个字节你知道吗

目录
简略理解计算机为什么要采纳二进制示意信息:
二进制位剖析
那么为什么 int 就占了 4 个字节呢?
问:所有的 int 都是占四个字节吗?
总结
简略理解计算机为什么要采纳二进制示意信息:
因为计算机作为一种电子计算机工具,是由大量的电子器件组成的,在这些电子器件中,电路的通断,电位的高下,用两个数字符号“1”和“0”别离示意容易实现,同时二进制的运算法令也很简略,因而计算机外部通常采纳二进制代码来作为外部存储,传输和解决数据,二进制数据是用 0 和 1 两个数码来示意的数,它的基数为 2(逢二进一,借一当二)
其实最开始应用的并不是二进制,而是十进制,因为人们有十个手指头,手能够示意十个数字,所以十进制是比拟正当的,0 的概念是之后很久才诞生的,所以是 0 -10 而不是 0 -9。

电子计算机呈现当前,应用电子管来示意十种状态过于简单,所以所有的电子计算机中只有两种根本的状态,开和关。也就是说,电子管的两种状态决定了以电子管为根底的电子计算机采纳二进制来示意数字和数据。罕用的进制还有 8 进制和 16 进制,在电脑迷信中,常常会用到 16 进制,而十进制的应用非常少,这是因为 16 进制和二进制有人造的分割:4 个二进制位能够示意从 0 到 15 的数字,这刚好是 1 个 16 进制位能够示意的数据,也就是说,将二进制转换成 16 进制只有每 4 位进行转换就能够了。

为什么应用二进制咱们理解了,当初就直奔咱们主题

二进制位剖析
首先计算机只意识二进制。而一个字节是 8 位二进制,只用 0 和 1 来示意状态,那么咱们看看一位能示意多少个状态

1 位:0 和 1 也就是 2 的一次方,最多示意 2 个状态(要么是 0,要么是 1)

2 位:00 和 11 也就是 2 的 2 次方,最多示意 4 个状态,也就是(00,01,10,11)

3 位:000 和 111 也就是 2 的 3 次方,最多示意 8 个状态,也就是(000,001,010,011,100,101,110,111)

……以此类推

8 位:就能够示意 2 的 8 次方个状态 = 256 个状态

9 位:示意 2 的 9 次方 = 512 个状态

10 位:示意 2 的 10 次方 = 1024 个状态

32 位:示意 2 的 32 次方 = 4294967296 个状态

查看底层源码咱们能够看到

而 int 如果转成十进制的话,那么他们的范畴[-231~231 -1], 也就是“-2147483648 ~ 2147483647”

计算机为了辨别正负数,所以把 256 个状态一半给了正数,也就是“-128~127”这 256 个数(因为要正负,所以从 8 位中拿走认为来示意)

byte 占 1 个字节 = 8 个比特位 就能够示意 2 的 8 次方个数

short 占 2 个字节 = 16 个比特位……

int 占 4 个字节 = 32 个比特位

那么为什么 int 就占了 4 个字节呢?
在 JAVA 中一共有八种根本数据类型,它们别离是 byte、short、int、long、float、double、char、boolean

其中 byte、short、int、long 都是示意整数的,只不过他们的取值范畴不一样

byte 占用 1 个字节 它的取值范畴为 -128 ~ 127
内存开销:

byte a = 1; // 00000001

short 占用 2 个字节,它的取值范畴为 -32768 ~ 32767
short a = 1; // 00000000 00000001

int 占用 4 个字节,它的取值范畴为 -2147483648 ~ 2147483647
int a = 1; // 00000000 00000000 00000000 00000001

long 占用 8 个字节,它的取值范畴为 -9223372036854774808 ~ 9223372036854774807
这里就不写了~

问:所有的 int 都是占四个字节吗?
答复:不肯定是 4 个字节,他和操作系统有关系,int 占多少个字节是由编译器决定的 以前 16 位零碎中 int 是 2 个字节的,而当初 32 位的零碎,int 是 4 个字节的,其实当初基本上都是 64 位零碎,所谓的 16 位 32 位 64 位零碎是由 cpu 决定的,由机器指令的寻址、寄存器位数决定的 os 受 cpu 的限度,但在 32 位的 cpu 下 16 位的 os 也能够跑 很多 os 是向前兼容的,就是使以前的程序也能运行,如果编译器自身是 16 位时代做的,那么 os 会提供一个模仿 16 位的子环境供这个编译器应用 非要转牛角尖的话,int 只是语言定义外面的一个关键字,只对 compiler 可见,complier 说它是几位就是几位,和 os/cpu 都没关系

总结
本片文章就到这里了,心愿可能给你带来帮忙

退出移动版