这里先介绍二进制,然后介绍一下数据。初学Java,希望各位大佬帮忙指错。谢谢。
十进制正整数转化二进制就是利用短除法,除2取余,逆序排列得到二进制数,具体如下:
但是对于负数来说还有其他步骤,下面我写一个负数的转化过程,我们已Byte类型的-75为例:上面已经知道了75的Byte类型的二进制数为0100 1011(Byte类型为8个二进制数,而首位又为符号位,所以在首位补0。0代表正数,1代表负数)如图:
但是对于较小的数值,就与要补很对位符号位。例如6:我们算出是:110。补上一位符号位是:0110。但是Byte是8个二进制位:所以为:0000 0110。例如:-5在计算机中表示为:1011。Byte类型表示为:1111 1011。要把所有的空位都补成符号位。
上图中提到了原码、反码和补码。这里介绍一下:计算机再存储二进制数时,是以补码的形式来存储的。这是因为计算机是使用加法器来计算的,就是化减为加。例如:2-1 = 2+(-1)。这样便可以不必再加装一个减法器。同理乘法器和除法器也说通过加法器算出来了。这里就不介绍了(我还没看,哈哈)。对于正数来说:正数的原码,反码和补码是一样的。对于负数来说:负数的反码是原码,除去符号位不变,其他每个位按位取反;补码是反码再加1。(就像上图的过程)这里用一个简单的图来说明为啥用补码可以化减为加:
十进制小数转化二进制的方法与整数不同,小数部分:乘2取整,顺序排列来得到二进制数。对于小数的整数部分按照上面的整数方法来计算得出。重点介绍下小数部分:
(1)、数据类型
1)、数据类型的作用:
用来声明变量,程序运行的时候,不同类型会分配不同大小的内存空间。所以合理的变量类型声明,可以节省空间。
(2)、数据类型的分类
1)、基本数据类型:
数值型:整数型(byte、short、int、long)
浮点型(float、double)
非数值型:布尔型(boolean)
字符型(char、String)
2)、引用数据类型
字符串型String****属于引用数据类型,也可以当作基本数据类型来使用。
Java中除了基本数据类型之外,剩下的都是引用数据类型。引用数据类型面向对象的时候才会接触。现在先不做介绍。
(3)、数据类型的区别
1)、计算机存储单位:
1字节 = 8bit
1bit就是二进制中的一个1或者0
类型 占用字节数量 取值范围
----------------------------------------------------------------------------------------------
byte 1 【-128~127】
short 2 【-32768~32767】
int 4 【-2147483648~2147483647】
long 8 【-263~263-1】
float 4 【1.4E-45~3.4E38】
double 8 【4.9E-324~1.79769E308】
boolean 1 【 ture、false】
char 2 【0-65535】
String类型理论上是无限长的,内存多大这个String就可以有多长。我介绍一下这些取值范围是怎么来的。
上面说到,1字节(Byte) = 8bit,1bit就是二进制中的一个1或者0,所以byte类型所能取得的最大值是0111 1111,最小值是1000 0000。这里先介绍一下,二进制怎么表示整数。就用这个八位二进制来举例,二进制中最高位表示符号位,0代表正数。1代表负数。 而二进制转化十进制是这么算的:正数:0111 1111 = 27*0+26*1+25*1+24*1+23*1+22*1+21*1+20*1 = 127。
从右往左依次代表20,21,22…2n-1。
负数: 1000 0000 =
-28+27*0+26*0+25*0+24*0+23*0+22*0+21*0+2^0*0 = -128。
其他的依此类推。但是对于float与double这两个的取值范围算法计算方法具体见:https://baike.baidu.com/item/单精度/5164489?fr=aladdin
2)、字符编码介绍:
字符型的本质也是数值型,因为计算机本质是识别二进制码,所以字符都有对应的数值。下面介绍一下几种常见的字符编码类型:
ASCII码:
‘a’—>97(01100001)
‘b’—>98(01100010)
…
‘A’—>65
‘B’—>66
…
‘0’–>48(文字0不是数字0)
如图所示:
文字到二进制叫编码,二进制到文字叫解码再发展,国际标准组织制定了ISO-8859-1编码方式,又称latin-1编码方式。向上兼容ASCII码,发展到亚洲,才支持中日韩 文…简体中文编码方式: GB2312
下篇写变量,希望大家多多支持