计算机中存储的数据类型

数据类型

计算机中存储的数据分为数值型数据和非数值型的数据

1 数值类型

1.1 二进制

计算机中的数据都是以二进制的进行的,这是因为计算机只能识别0和1,二进制主要是为了计算机识别,一长串的01串很反人类,很难准确的计算出数值,很不符合人们日常对数据的认识;
前导符: 0b
进位规则: 逢二进一,每一位上的数字只能是0或1;
如: 0b1001 0110
二进制的优势:

1)二进制只有两种状态,使用两个稳定状态的物理器件就能表示二进制的每一位,创造成本低,比如使用高低电平分别表示0和1;
2)二进制位的哦0和1正好与逻辑值中的“真 ”和“假”对应,方便计算机实现逻辑运算和程序中的逻辑判断;
3)二进制的编码和运算规则简单,通过逻辑门电路能方便的实现算术运算;

1.2 十进制

十进制是日常生活中最常用的,我们日常在数学上常使用的就是十进制;
没有前导符
进位规则: 每位上的数值范围位0-9,每个数位满十就向高位进位,即逢十进一;
如: 871029 ;

1.3 八进制

个人觉得八进制使用的也不多;
前导符: 0
进位规则: 逢八进一,每个数位上的数值范围0-7;
如: 0234, 0567;

1.4 十六进制

4位二进制数码与1位十六进制数码相对应,在单片机的编程中常用一位十六进制数控制4个引脚,使用的比较频繁;
前导符: 0x
进位规则: 逢16进1,每一位上的数字范围 0~9 A:10 B:11 C:12 D:13 E:14 F:15
如: 0xAABB 0X56EF

1.5 进制转换

1.5.1 二进制转八进制和十六进制

对于二进制混合数(既包含整数部分,也包含小数部分),在转换时以小数点为界。整数部分从小数点开始往左数,将一串二进制数分为3位(八进制)一组和4位(十六进制)一组,数的最左边不满一组的前加0补齐;小数部分是从小数点往右数,将一串二进制数分为3位(八进制)一组和4位(十六进制)一组,数的右边根据需要右补0;最终使位数为3或者4的整数倍,然后取对应的八进制或者十六进制数取代。

0b1011010–>八进制
0b001011010 -->0132

0b1011010010–>十六进制
0b001011010010–>0x2D2

1.5.2 八进制和十六进制转二进制

将上述过程反着来

1位八进制数表示3位二进制数
0456 -->0b100101110

1位十六进制数表示4位二进制数
0X56EF -->0b0101011011101111

1.5.3 任意进制转十进制

按权展开相加法: 将任意进制数的各位数码与它们的权值相乘,再把乘积结果相加;

1.5.4 十进制转任意进制

除基取余法(整数部分转换): 整数部分除基取余,最先取得的余数位数的最低位,最后取得的余数为最高位(即除基取余,先余为低,后余为高),商为0时结束;

乘基取整法(小数部分转换): 小数部分乘基取整,最先取得的整数为数的最高位,最后取得的整数为数的最低位(即乘基取整,先整为高,后整为低),乘积为1.0(或者满足精度要求时)结束;

*** 在计算机中,小数和整数不一样,整数可以连续表示,但小数是离散的,所以并不是每个十进制小数都可以用二进制表示,例如0.3,无论经过多少次乘二取整转换都无法得到精确的结果。但是任意二进制小数都可以用十进制表示。 ***

2 非数值类型

计算机内部只能识别和处理二进制代码,但是有些情况下我又需要处理非数值型数据, "www.baidu.com"网址、人名等等;所以就需要专门用来处理非数值型数据

2.1 字符编码ASCII码

国际上常采用的一种字符系统是7位二进制编码的ASCII码(每个字节的最高位保持为0,可以用于传输时的奇偶校验)
在Linux系统中可以使用命令 man ascii 可以查看ascii码表。

‘a’ ‘8’ “hqyj” 这些都是非数值型数据

每一个字符都会对应一个整数,这个整数就是该字符的码值

常见的字符对应的ascii码

'A'		65
'a'		97
'0'		48
'\n'	10
'\0'	0

转义字符: 任何一个字符都可以用一个 \ 加上一个整数(八进制的)来表示,C语言中还定义了一些 +字符 来表示那些 无法显示的字符如 ‘\n’ ‘\a’ ‘\t’ 等。这字符称为转义字符,因为这些字符已经不是自身的含义了。

2.2 汉字的表示和编码

汉字的编码包括汉字的输入编码、汉字内码、汉字字形码三种,它们是计算机中用于输入、内部处理和输出三种用途的编码;
区位码是国家标准局实施的标准,用两个字节表示一个汉字,将汉字和图形符号排列在一个94行94列的二维数码表中。区位码是4位十进制数,前两位表示区码,后两位表示位码,所以称为区位码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值