C++是运行效率较高的语言。本文参考西北工业大学在慕课网的“C++程序设计”内容书写,具体内容请参考https://www.icourse163.org/learn/NWPU-494001?tid=1467026445#/learn/content
本文目录如下:
- 1 进位计数制及转换
进位计数制;数制间的转换 - 2 数据在计算机中的表示
数值数据在计算机中的表示;非数值数据在计算机中的表示;
refer:
- 西北工业大学“C++程序设计”
1 进位计数值及转换 1.1 进位计数制
为了方便计算机的计算,有多种数字系统,常见的有二、八、十、十六进制,从而也诞生了进位计数制。进位计数值即用位权相加表示一个数,如下所示:
常见数字系统如下:
注意前缀和后缀不同,后缀是缩写,前缀需要记忆:
将四种进制相互转换大致可以分为三种,分别是:十进制转为其余三种进制;其余三种进制转换为十进制;其余三种进制间相互转换。
一、十进制转为其余三种进制
整数部分采用除基取余法,小数部分采用乘基取整法。其中整数部分逆序取余,小数部分顺序取整。案例如下:
二、其余三种进制转为十进制
采用位权相加法,以二进制转十进制为例,案例如下:
三、其余三种进制间相互转换
如果是八进制和十六进制相互转换,则先转为二进制再转换会快一点。
计算机内部表示只有0、1,数值数据在计算机中的表示形式有整数型和浮点型,这一节内容可以在《计算机组成原理》中深入研究。
一、整数在计算机中的表示
整数在计算机中的表示有原码、反码、补码、移码等。其中原码是为了方便人们理解,反码是原码到补码的过度,补码才是计算机内部整数真正的表现形式,它的优势在于:补码能将加减都以加法方式实现。
(1)原码
在数值头部多出一个符号位,0正1负。符号位后是数值位,易于人理解。
(2)反码
正数的反码和原码相同,负数的反码将除符号位外所有位按位取反。
(3)补码
下面介绍如何从原码直接变成补码。正数的补码和原码相同,负数的补码为保留原码符号位,从右至左找到第一个等于1的数值位,将该数值位右边的位保留不变,该数值位左边的按位取反,符号位不变。
从[x]补求[-x]补的方法同上,只不过符号位也需要改变。即保留原码符号位,从右至左找到第一个等于1的数值位,将该数值位右边的位保留不变,该数值位左边的按位取反,包括符号位(符号位也要改变)。
补码的计算能将减法转为加法,如9-9即为9+(-9),案例如下:
二、浮点数在计算机中的表示
在视频中,老师使用的是IEEE754标准,在408大纲考试中使用的也是这种标准,将在此将这种标准进行讲解。
整型/整数指的是小数点固定不动的数,所以当他们要表达一个带小数点的数的时候,他们会分为两个数进行表示,其中一个数只表示整数部分,另一个数只表示小数部分。
而浮点数则是用一个数表示了一整个小数,浮点数指的是小数点不固定的数。在进行浮点数表示前,我们首先要把要表示的数据转为二进制,再将二进制转换为科学计数法的表示方式,这一步叫做规格化,如下:
在IEEE 754标准中一个浮点数分为三部分表示,分别是数符、阶码和尾数部分,其中数符反应数的正负,0正1负;阶码反应数的大小,用移码表示;尾数反应数的精度,用原码表示,小数点前第一位的1省略不表示。
常见浮点类型,float和double类型分别见下:
需要记住常见的单精度格式,1bit数符,8bit阶码,23bit尾数。
案例如下:
上面只是介绍了整数和浮点数以及浮点数的加减运算。然而整数的乘除,浮点数的加减,ALU加法器的实现仍未介绍,需要学习者参考《计算机组成原理》。
2.2 非数值数据在计算机中的表示非数值部分在计算机中最常用的表示形式为ASCII方法,从0-127,共128个字符,用7bit便可以全部表示:
其中要记住的是A-65-0b100 0001,a-97-0b110 0001



