java小白学习记录3:数据与二进制

这里先介绍二进制,然后介绍一下数据。初学Java,希望各位大佬帮忙指错。谢谢。

1、二进制

(1)、整数

​   十进制正整数转化二进制就是利用短除法,除2取余,逆序排列得到二进制数,具体如下:

java小白学习记录3:数据与二进制_第1张图片

​   但是对于负数来说还有其他步骤,下面我写一个负数的转化过程,我们已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。(就像上图的过程)这里用一个简单的图来说明为啥用补码可以化减为加:

java小白学习记录3:数据与二进制_第2张图片

(2)、小数

​   十进制小数转化二进制的方法与整数不同,小数部分:乘2取整,顺序排列来得到二进制数。对于小数的整数部分按照上面的整数方法来计算得出。重点介绍下小数部分:

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)

如图所示:

java小白学习记录3:数据与二进制_第3张图片
java小白学习记录3:数据与二进制_第4张图片  文字到二进制叫编码,二进制到文字叫解码再发展,国际标准组织制定了ISO-8859-1编码方式,又称latin-1编码方式。向上兼容ASCII码,发展到亚洲,才支持中日韩 文…简体中文编码方式: GB2312。繁体中文:big5(台湾使用大五码)。Java采用Unicode编码,unicode编码统一全球所有文字。具体实现包括:UTF-8 、UTF-16UTF-32…中文在Java中已16进制的方式存在,我们可以在jdk自带的命令中查询汉字对应的16进制是多少,在JDK的Bin目录下有native2ascii.exe 这么一个命令,可以查看中文对应的16进制数,如图:java小白学习记录3:数据与二进制_第5张图片

下篇写变量,希望大家多多支持

你可能感兴趣的:(java)