分类简单理解计算机为什么用二进制来表示信息:二进制位分析那么为什么int要占4个字节呢?问:所有的int都占四个字节吗?总结简单理解计算机为什么用二进制来表示信息:因为计算机作为一种电子计算机工具,是由大量的电子设备组成的。1”和“0”分别表示容易实现,二进制算法也很简单,所以计算机通常使用二进制代码作为内部存储、传输和处理数据,二进制数据用0和1两个数字表示,它的基数就是2(每二进一,借一为二)。其实第一次用的不是二进制,而是十进制,因为人有十个手指,手可以代表十个数,所以十进制比较合理,0的概念诞生的很晚,所以0-10而不是0-9。电子计算机出现后,用电子管表示十种状态太复杂了,所以所有的电子计算机只有两种基本状态,开和关。换句话说,电子管的两种状态决定了以电子管为基础的电子计算机使用二进制来表示数字和数据。常用的基数有八进制和十六进制。在计算机科学中,经常使用十六进制,很少使用十进制。这是因为十六进制和二进制有天然的联系:4个二进制位可以表示0到15之间的数,也就是1个十六进制数可以表示的数据,也就是说二进制转十六进制只需要每4位数字转换一次。我们明白了为什么要用二进制,现在就直接进入我们的话题二进制位分析。首先,计算机只能理解二进制。而一个字节是8位二进制,只用0和1来表示状态,那我们看看一个位可以表示多少个状态:0和1是2的次方,最多可以表示2个状态(either0,or1)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位:用9位可以表示2的8次方=256个状态:用10表示2的9次方=512个状态bits:表示2的10次方=1024种状态32bits:表示2的32次方=4294967296种状态查看底层源码,我们可以看到,如果将int转换为十进制,那么它们的取值范围是[-231~231-1],即"-2147483648~2147483647"为了区分正负数,计算机将256个状态中的一半给负数,即256个数"-128~127"(因为需要要正负,所以取8位来表示)byte占1字节=8位表示2的8次方的个数short占2字节=16位...int占4字节=32位那么为什么int要占4个字节呢?JAVA中一共有8种基本数据类型,分别是byte、short、int、long、float、double、char、boolean其中byte、short、int、long都代表整数,但是它们的取值范围不同byte占1个字节取值范围为-128~127。内存开销:bytea=1;//00000001short占2字节,取值范围-32768~32767shorta=1;//0000000000000001INT占用4个字节,其取值范围为-2147483648~2147483647inta=1;//000000000000000000000001LONGoccupies8bytes,itsvaluerangeis-92233372036877774854854872036878788788720372037203720372037203720372037203720372037203720372037203720372037203720~Q:Doallintsoccupyfourbytes?答:不一定是4个字节,跟操作系统有关系在系统中,int占多少字节是由编译器决定的。以前int在16位系统中是2个字节,现在32位系统中int是4个字节。其实现在基本都是64位了。所谓16位32位64位系统是由CPU决定的。由机器指令的寻址和寄存器数量决定的OS受CPU的限制,但是16位的OS在32位的CPU下也能跑很多。os是向前兼容的,也就是说以前的程序也可以运行。如果编译器本身是16位时代做出来的,那么os会提供一个模拟的16位子环境供编译器使用。如果非要拐个弯,int只是语言定义中的一个关键字,只对编译器可见。Complier说是几位数而已,跟os/cpu没关系。本文到此结束。我希望它可以帮助你。
