计算机中数据的存储(基础篇)

简介: 计算机中数据的存储(基础篇)

🔥🔥数据类型是学习任何语言的基础

一、数据的表示

二进制的由来

计算机有电才能工作,电子通过两种状态传递信息,高电频表示1 低电频表示0

为什么又有八进制、十六进制呢

二进制表示一个数太长啦,显示太不方便,八进制、十六进制与二进制相互转化方便

二、数据的单位

1Bit(比特)表示一位二进制

1Byte(字节) = 8Bit(比特)

1Kb(千字节) = 1024Byte

1Mb(兆字节) = 1024Kb

1Gb(吉字节) = 1024Mb

1Tb(太字节) = 1024Gb

我们平常说的你电脑内存是8G 还是16G的,就是8吉字节 16吉字节

内存中的数据的存取是以字节为单位,超级重要!!!

三、数据类型

数据类型的由来

计算机源于生活而设计,不同的数据类型可以理解为不同的单位

就像我说我口袋有100块钱,我有多少钱???

显然这是不确定的,可能是100人民币,100美元

以java中8种基本数据类型为例

  • 整数:byte、short、int、long
  • 浮点数:float、double
  • 字符:char
  • 布尔:boolean

不同的数据类型占不同的内存空间大小

  • byte  -  1字节   short    - 2字节
  • int     -  4字节   long     - 8字节
  • float  -  4字节   double - 8字节
  • char  -  1字节  boolean - 1字节(通常)  

四、数据类型的存储

数据存储在计算机里面的都是二进制补码

原码、反码、补码

正数:原码 == 反码 == 补码

负数:二进制的最高位表示符号位,其它位表数据位

补码的计算方法:

1.写出该数的原码

2.符号位不变,其他位按位取反是反码

3.反码加 1 是补码

下面所讨论的取值范围和计算都以1字节byte为例

例如:byte = -1

为什么会有补码???只用反码不行嘛,那肯定不行咯

其实很简单:看几个计算的例子

需要注意的是:(很重要)

符号位也是数据,是数据就要参与运算

如果数据类型放不下该数据,发生截断

cpu只有加法寄存器所以 1 - 1 等价于 1 + (-1)

如果只用最高位区分正负,计算过程如下

可以,看似没什么问题

再来 =_=

出问题了哎!!!

-127+(-1)很好理解,因为已经超出数据范围了,超出规范了,结果也不会规范

-1+2怎么等于0呢,比原结果少1,是不是巧合?

看下面的表

结论:在负数参与运算时,如果跨越了0,0会被使用两次,所以结果少1

如何解决负数计算的跨0问题 - 补码诞生

早期的程序员都是伟大的数学家,他们巧妙的进行了错位,设计出了补码

把所有负数的反码都加1,为补码,例如:-0的补码是0000 0000

所有负数的补码是由它上一个数的反码得来,看表

小细节1

但是,就算是有了补码

+0跟-0都是零,重复了,计算机是不会浪费这样一个存储空间的

-0要么表示-128,要么表示128,在这-0表示-128

推导过程(理解不了记结论)

但是1000 0000往回推是推不出来它表示十进制-128的

因为已经发生了截断,计算机看到这个二进制直接把它解释为-128

可以理解为-128没有原码和反码

还有个小细节

-128-1是谁呢(cpu只有加法寄存器

那127+1呢

示意图

五、数据的取值范围

如何得来,以byte为例

byte 占1个字节 8 个比特位,有符号,最高位表符号,7位表数据

一位能表示0和1 (2^1), 两位能表示0 1 2 3 (2^2)

依次类推7位能表示(2^7)个数,0也在内,正数范围就是0 - 127

负数0 - (-128)

不要忘了小细节:

-128的二进制是直接被解释的

取值范围计算公式(不需要记,理解即可)

n表示有几个比特位

无符号数:【0, 2^n-1】

有符号数:【-2^(n-1)-1, 2^(n-1)-1】

了解原反补的由来这取值范围不轻轻松松搞定

完美撒花撒花🌹🌹

相关文章
|
6月前
|
存储 缓存 固态存储
计算机的存储
计算机的存储
244 2
|
2月前
|
存储 固态存储 Linux
存储学习
存储学习
|
4月前
|
存储 固态存储 芯片
计算机中内存与存储
【7月更文挑战第28天】
72 1
|
6月前
|
存储 Java
计算机如何存储数据
计算机如何存储数据
177 1
|
6月前
|
存储 缓存 固态存储
|
存储 机器学习/深度学习 C++
C/C++数据在计算机内存中的存储形式详解
C/C++数据在计算机内存中的存储形式详解
深度解析各种数据在计算机内存中的存储
深度解析各种数据在计算机内存中的存储
深度解析各种数据在计算机内存中的存储
|
存储
人与计算机的信息差异
人和计算机对信息编码的差异用一句话来讲计算机的功能,就是传输、存储和处理信息。要完成这样的任务,就要对信息本身进行编码,对信息要传送对目的地编码,对存储信息的物理单元编码。因此,有效的编码是计算机科学的基础。人们在对不同的对象进行编码时,主要考虑是否好记,而计算机则强调的是效率。人类区别不同对象的思路和计算机完全不同,为了让计算机有效的工作,为它设计的编码有别于人们的思维习惯。因为,首先,暂时忘记
743 0
人与计算机的信息差异
|
存储 Java
详解计算机内部存储数据的形式 二进制数(1)
详解计算机内部存储数据的形式 二进制数(1)
402 0
详解计算机内部存储数据的形式 二进制数(1)
|
存储 缓存 程序员
计算机中的层次化存储究竟是个什么鬼?
撸代码只是程序员的一项最基本的技能,除此之外,还有很多知识需要程序员掌握。【程序员进阶系列】专题,旨在分享程序员想要进一步提升自我,突破发展瓶颈的一系列技术。今天,我
261 0
计算机中的层次化存储究竟是个什么鬼?
下一篇
无影云桌面