[知 识 点] 1.数值数据的表示 2.非数值数据的表示 3.数据的存储 4.数据的运算 [重 点] 1.数制和编码 2.数据的基本运算 [难 点] 1.数制和编码 2.数据的基本运算 [基 本 要 求] 1.掌握计算机内部各种数据的编码表示及其运算方法 2.了解高级语言程序中的各种类型变量对应的表示形式 3.在高级语言程序中的变量、机器数和底层硬件 (寄存器、加法器、ALU 等)之间建立关联 4.综合运用所学知识,分析高级语言和机器级语言程序设计中遇到的各种与数据表示和运算相关的问题,解释相应的执行结果
1. 在高级程序语言中所处理数据的类型:
-
数值类型
-
非数值类型
∎数值数据:用来表示数量的多少,可比较其大小
-
整数:无符号整数和带符号整数
-
实数
整数用定点数表示,实数用浮点数表示。
∎非数值类型:就是一个没有大小之分的位串,不表示数量的多少,主要用来表示字符数据和逻辑数据。
在计算机内部,数值类型的表示方法有两大类:第一种是直接用二进制数表示;另一种采用二进制编码的十进制数(BCD)。
1.1 数值数据的表示
-
进位计数制
-
定、浮点表示
-
如何用二进制编码
即:要确定一个数值数据的值必须先确定这三个要素。
例如:机器数:01010110的值是多少? 答案是:不知道!
∎进位计数制
十进制、二进制、十六进制、八进制数及其相互转换。
∎定、浮点表示(解决小数点问题)
定点整数、定点小数
浮点数(可用一个 定点整数和一个定点小数来表示)
∎定点数的编码(解决正负号问题)
原码、补码、反码、移码(反码很少用)
1.2. 进位计数制
常见进制
二进制由0和1组成,逢2进1,以 b / B开头
八进制由0~7组成,逢8进1,以0开头
十进制由0~9组成,逢10进1,D开头 没有前缀默认为十进制
十六进制由0 ~ 9和a ~ f(不分大小写)组成,以 x / X 开头
二进制、八进制、十进制和十六进制是计算机中常用的进制方式。它们之间的关系如下:
-
二进制(Binary):只包含 0 和 1 两个数字,用于表示计算机中的开关、存储器等。一个二进制数的每一位只能是 0 或 1,例如 1101B 表示 1 × 2³ + 1 × 2² + 0 × 2¹ + 1 × 2⁰ = 13。
-
八进制(Octal):包含数字 0-7,8 以及 9 无法表示。一个八进制数的每一位的权值是 8 的次幂,例如 24O 表示 2 × 8¹ + 4 × 8⁰ = 20。
-
十进制(Decimal):包含数字 0-9,每一位的权值是 10 的次幂。例如 125D 表示 1 × 10² + 2 × 10¹ + 5 × 10⁰ = 125。
-
十六进制(Hexadecimal):包含数字 0-9 和字母 A-F,每一位的权值是 16 的次幂。例如 ABCH 表示 A × 16¹ + B × 16⁰ + C × 16⁻¹ + H × 16⁻²。
在实际应用中,这些进制方式之间可以进行相互转换。例如,将一个二进制数转换为十进制数,只需按照二进制数的权值乘以各位的值相加即可;将一个十六进制数转换为二进制数,只需将每一位转换为对应的 4 个二进制位即可。下面是一些常见的进制转换方法:
-
二进制转十进制:将二进制数按权值展开,然后各位相加即可。
-
十进制转二进制:采用除以 2 取余的方式得到各位的值,然后倒序排列即可。
-
十进制转八进制和十六进制:采用除以 8 和 16 取余的方式得到各位的值,然后倒序排列即可。
-
八进制和十六进制转二进制:将每个位上的数字转换为对应的二进制位即可。
总之,不同进制方式之间可以相互转换,通过使用适当的转换方法,我们可以在不同进制之间进行数值的表示和转换。这在计算机系统和信息技术领域中具有重要的应用价值。
(一):R进制转十进制
⑴任何一个R进制数转换为十进制数时,只需要“按权展开”
例子:二进制转十进制的第一个方法是要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右
(二):十进制转R进制
要将小数部分和小数部分分别进行转换,最后两部分组合起来 得到一个完整的数。
1 .整数部分的转换
整数部分的转换方法是“除基取余,上右下左”
用转换的十进制整数除以基数R,将得到的的余数作为结果数据中的各位的数字,直到上商为0为止。下面的余数作为左边高位上的数位。
2 .小数部分的转换
小数部分的转换方法是“乘基取整,上左下右”
用转换的十进制小数乘以基数R,将得到的的乘积的整数部分作为结果数据中的各位的数字,小数部分继续与基数R相乘,直到某一步乘积的小数部分为0或已得到希望的数位为止。最后,将上面的整数部分作为左边高位上的数位,下面的整数部分作为右边低位上的数位。