• 计算机中存储的数据类型


    数据类型

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

    1 数值类型

    1.1 二进制

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

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

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

    2.2 汉字的表示和编码

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

  • 相关阅读:
    Mysql高阶语句
    用智能文字识别技术赋能古彝文数字化之路
    索引底层原理-锁机制
    编译原理第三版课后答案
    day01(Flume)
    英文网站的优化设计应该考虑哪些
    tomcat nio2源码分析
    太原元宇宙3D交互展厅搭建让观众能够与企业进行更加紧密的沟通和交流
    读像火箭科学家一样思考笔记03_第一性原理(上)
    RobotFramework入门(二)appUI自动化之app启动
  • 原文地址:https://blog.csdn.net/qq_41555003/article/details/126022201