关于 数据类型的存储方式和取值范围 浅析

时间:2019-04-19
本文章向大家介绍关于 数据类型的存储方式和取值范围 浅析,主要包括关于 数据类型的存储方式和取值范围 浅析使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

计算机存储方式

1.数据在计算机中以二进制的形式存储在计算机中 ,

2.如何存储数字
我们平时所说的数值一般都是进制的,但计算机只能存储0和1,所以需要将10进制的数转为二进制让计算机进行储存。
但也有一些特殊情况,如果想存 -3 就需要使用补码(计算机无法存储负号);如果想存 0.75 就需要使用浮点数(计算机无法存储小数点)。
3.如何存储字符

字符存储和数字的存储有着相似的过程,通过ASCII表,我们可以查询到字符对应的二进制数。

4.如何存储中文

和存储字符类似,中文也有对应的CODE值来进行存储,将16进制的CODE值转为二进制,计算机就可以存储了。详见GBK表
5.进制转换

1.十进制转换为二进制
方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
例如:十进制 转换为二进制为:3------- 11 ; 11------1011
2.二进制转换为十进制
方法为:把二进制数按权展开、相加即得十进制数。
计算机中表示形式
0000 0011 -------3
1000 1011 ------- -11
注意:第一位是符号位 0为正数 1为负数,最后一位是最底位

《 计算机组成原理中》的原码,补码,反码的概念

原码:早期用来表示数字的一种方式: 一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码
 举例说明:

int类型的 3 的原码是 11B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得:

00000000 00000000 00000000 00000011

int类型的 -3 的绝对值的二进制位就是上面的 11B 展开后高位补零就得:

10000000 00000000 00000000 00000011

但是原码有几个缺点,零分两种 +0 和 -0 。很奇怪是吧!还有,在进行不同符号的加法运算或者同符号的减法运算的时候,不能直接判断出结果的正负。你需要将两个值的绝对值进行比较,然后进行加减操作 ,最后符号位由绝对值大的决定。于是反码就产生了。
      
**反码:正数的原码就是反码, 负数的反码是 原码除符号位以外 按位取反
举例说明:

int类型的 3 的反码是

00000000 00000000 00000000 00000011

和原码一样没什么可说的

int类型的 -3 的反码是

11111111 11111111 11111111 11111100

除开符号位 所有位 取反

解决了加减运算的问题,但还是有正负零之分,然后就到补码了

补码:计算机实际存储数据的方式,正数原码就是补码 负数补码有两种方式求得:
a):原码除符号位外所有位取反(得到反码了),然后最低位加1.
b)先取负数的原码的绝对值的原码,再将该原码包括符号位 均 按位取反 在最底位加1

还是举例说明:

int类型的 3 的补码是:

00000000 00000000 00000000 00000011

int类型的 -3 的补码是

11111111 11111111 1111111 11111101

就是其反码加1

下面以 byte类型为例 讲解 数据类型的取值范围 为什么总是 负数比正数的取值范围多1?

  1. 数据类型:byte
  2. 字节数:1B(8bit)
  3. 十进制取值范围:-128~127 (-27~27-1

byte 取值范围:   -128 ~ 127
01111  1111    对应最大正数数为127
0000  0001    对应最小正数1
0000 0001 ~0111 1111 代表 1~127取值范围
------------------------
11111  1111    对应最小负数为 -127
1000  0001    对应最大负数为 -1
------------------------
剩余:
0000 0000     代表数字 0
1000 0000     代表数字 -128

解释:字长为8位时,(-128)没有相对应的原码和反码, (-128) = (10000000)
-128的机器码原码实际是:110000000,反码101111111,补码110000000,截取低8位即10000000,表示的是一个负数。