1. 进制的概念
因为不可能为每个数值都创造一个符号,所以需要用基本数字组合出复合的数值,这样就有了进制的概念。
其实所有进制都是人为的创造,都是用来计数方便的。现在最常用的进制是十进制,当然其它的进制也在使用中。例如“半斤八两”这个成语,就反映了古代一斤等于十六两的概念,也就是十六进制计数方式。
计算机编程中常用的进制有二进制、八进制、十进制和十六进制,十进制还是最主要的表达形式。在编程中,大家书写的数值默认为十进制。
对于进制,有两个最基本的概念:基数和运算规则。
u基数
基数指一种进制中组成的基本数字,也就是不能再拆分的数字。例如十进制是0-9,二进制是0和1,八进制是0-7,十六进制是0-9,A-F(大小写均可)。或者可以简单的这样记忆,假设是n进制的话,基数就是[0,n-1]的数字,基数的个数和进制值相同,十进制有十个基数,依次类推。
u运算规则
运算规则就是进位或借位规则,这个类似于一般计算机书籍中位权的概念,例如对于十进制来说,该规则是“满十进一,借一当十”,也就是低位的数字满十了向高位进一,从高位借到的一,相当于低位上的十。其它的进制也是这样,对于二进制来说,就是“满二进一,借一当二”,八进制和十六进制也是这样。
在数学上表示一个数字是几进制,通常使用如下格式:[数值]进制数,例如[10]2 表示二进制数值10。
1.1. 二进制
二进制是计算机内部数据表示的形式,所以学习计算机编程必须熟悉二进制。熟悉二进制有以下几个用途:
u更容易理解计算机的数据存储方式
计算机内部的很多转换,例如数据类型之间的强转,都可以用二进制解释最终的结果的值。
u二进制的运算速度高
二进制的运算速度比十进制高的多。例如求2的n次方,通过移位实现的效率比数学方法高效。
u使用二进制数值进行数据存储
以二进制的形式存储数值,一个是比较节约资源,可以使用二进制的位来存储信息,例如常见的硬件控制信息,都是二进制的形式进行提供的。
如前所述,二进制包含0和1两个基数,运算规则是“满二进一,借一当二”,下面简单的介绍一下二进制的计数方式。
例如十进制的0-9用二进制进行表达,则依次是:
0,1,10,11,100,101,110,111,1000,1001
说明:数值之间使用逗号进行间隔。
下面是二进制的一些基本运算结果:
u加法运算
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
u减法运算
0 – 0 = 0
0 – 1 = -1
1 – 0 = 1
1 – 1 = 0
u乘法运算
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1
u除法运算
0 / 0 无意义
0 / 1 = 0
1 / 0 无意义
1 / 1 = 1
以下是一些符合的表达式:
110 + 111 =1101
这些基本的运算结构在实际开发中一般不会直接用到,但是通过这些内容可以加深对于二进制概念的理解。
1.2. 二进制和十进制之间的转换
由于计算机内部的数据是以二进制进行表达的,而十进制又是日常生活中最常用的进制,所以它们之间经常需要进行转换。下面介绍一下转换的方式。
1.2.1.十进制转换为二进制
十进制整数转换为二进制有三种方法,分别是除二取余、计算器转换和经验法。十进制小数的转换方法最后做简单的介绍。
u除二取余法
除二取余法是转换时的最基本方法,也是最通用的方法。规则为:使用十进制和2去除,取每次得到的商和余数,用商继续和2相除,直到商为零为止,第一次得到的余数作为二进制的低位,最后一次得到的余数作为二进制的高位,由余数组成的数字就是转换后二进制的值。例如十进制的13转换为二进制的计算步骤如下:
商
|
余数
|
13 / 2 = 6
|
1
|
6 / 2 = 3
|
0
|
3 / 2 = 1
|
1
|
1 / 2 = 0
|
1
|
则计算的最终结果就是1101。
|
u计算器转换
Windows操作系统中的计算器也可以很方便的实现进制之间的转换。在程序菜单中附件子菜单中打开计算器,从打开的计算器的查看菜单中,选择“科学型”,输入你要转换的十进制的数字,例如13,然后界面上数字显示框西侧的“二进制“,则转换后的数值就直接显示在计算器中。
u经验法
对于二进制熟悉以后,那么计算十进制对应的数字可以通过一些基本的数学变换来实现,在使用经验法以前,必须熟记2的0-10次方对应的十进制的值,依次是:
1,2,4,8,16,32,64,128,256,512,1024
则转换一些特殊的数字时可以极大的提高转换速度,例如数字65,则可以这样转换:
65 = 64 + 1
64对应的二进制形式为1000000
1对应的二进制形式为1
则65的二进制形式为1000001
这个只适合转换一些特殊的数字,适应性没有除二取余法广泛。
十进制小数的转换采用的一般方法是乘二取整法,规则为:对于小数部分先乘二,然后获得运算结果的整数部分,然后将结果中的小数部分再次乘二,直到小数部分为零为止,则把第一次得到的整数部分作为二进制小数的高位,后续的整数部分作为地位就是转换后得到的二进制小数。需要说明的是,有些十进制小数无法准确的用二进制进行表达,所以转换时符合一定的精度即可,这也是为什么计算机的浮点数运算不准确的原因。
例如0.25转换为二进制小数的步骤如下:
整数部分
0.25 × 2 = 0.5 0
0.5 × 2 = 1.0 1
则0.25转换为二进制小数为0.01
如果一个十进制数字既有整数部分,也有小数部分,则分开进行转换即可。
1.2.2.二进制转换为十进制
二进制转换为十进制采用的方法是:数字乘位权相加法。下面先以十进制为例来说明该方法,例如十进制数字345的值,5的位权是1,4的位权是10,3的位权是100,则有如下表达式成立:345=5 × 1 + 4 × 10 + 3 × 100,这就是数字乘位权相加法的原理。
其实对于十进制整数的位权很有规则,从右向左第n位的位权是十的(n-1)方,
例如个位是10(1-1),十位是10(2-1),依次类推。
那么二进制整数的位权规律和这个一致,也就是从右向左第n位的位权是二的(n-1)方。
例如二进制整数1011转换为十进制的表达式为:
[1011]2= 1 × 2(0) + 1 × 2(1) + 0 × 2(2) + 1 × 2(3) = 1 + 2 + 0 + 8=11
而对于二进制的小数,也是采用一样的方法,只是二进制小数的位权规则为,小数点后第一位小数的位权是2的-1次方,第二位是2的-2次方,依次类推。
例如二进制小数0.1101转换为十进制小数的表达式为
[0.1101]2=1×2(-1) + 1 ×2(-2) + 0 × 2(-3) + 1 × 2(-4) = 0.5 + 0.25 + 0 + 0.0625=0.8125
同理,如果二进制包含整数和小数部分,则分开进行转换即可。
1.3. 二进制和八进制、十六进制之间的转换
虽然二进制是计算机内部的数据表达形式,但是由于二进制基数太少,则导致数字比较长,为了简化数字的书写,就创建了八进制和十六进制。八进制和十六进制就是对二进制的简化,所以二进制到八进制和十六进制的转换非常简单。
二进制整数转换为八进制的方法是“三位一并“,也就是从右侧开始,每3位二进制数字转换为八进制的一位,依次类推,因为二进制的三位数字可以表达的区间是000-111,刚好和0-7重合。例如:
二进制的10111转换为8进制为:最后三位111转换为7,前面的数字10转换为2,则转换后得到的八进制数字为27。
二进制整数转换为十六进制的方法是“四位一并“,例如10111转换为十六进制是0111转换为7,1转换为1,则转换后得到的十六进制数字是17。
二进制小数转换为八进制的方法也是“三位一并“,只是转换时从小数的高位开始,也就是小数的左侧开始。例如0.10111转换为八进制是101转换为5,110转换为6,则转换得到的八进制小数为0.56。需要特别注意的是,小数最后如果不足三位,一定要在后续补零以后再进行转换。
二进制小数转换为十六进制的方法也是“四位一并”,只是转换时从小数的高位开始。例如二进制小数0.10111转换为十六进制小数为,1011转换为b,1000转换为8,则转换后得到的十六进制是0.b8。
如果二进制数包含整数和小数部分,则分开进行转换。
分享到:
相关推荐
常见进制间转换.ppt常见进制间转换.ppt常见进制间转换.ppt常见进制间转换.ppt
基于对话框,在CEDIT框中实现进制间转换,也就是实现转换并且显示到CEDIT控件上。 已实现的功能:二进制与十六进制字符串之间的转换。 未实现的功能:二进制与ASCII、十六进制与ASCII字符串之间的转换。 未实现的...
在编程领域,进制转换是一项基础且重要的技能。C语言作为一种通用的编程语言,提供了丰富的功能来处理不同进制之间的转换。在这个主题中,我们将深入探讨C语言如何进行进制间转换,包括二进制、八进制、十进制和十六...
在MFC中,进行二进制和十六进制转换通常涉及到字符串操作和位运算。例如,你可以使用CString类来处理字符串,并利用位移、按位与、按位或等操作来实现转换。以下是一个简单的示例: 1. **二进制转十六进制**:先将...
在编程领域,进制转换是一项基础且重要的技能。在C++中,我们可以通过自定义函数或者使用内置的库函数来实现不同进制间的转换。本文将深入探讨如何使用C++来实现二进制、八进制和十进制以及十六进制之间的转换。 一...
在计算机科学中,进制转换是一项基础且至关...总之,理解和掌握不同进制间的转换是每个C语言程序员的基础功,这个文档“各种进制转换_c语言.doc”会是一个很好的学习资源,帮助读者深入理解进制转换的原理和实践技巧。
在实际操作中,我们可以通过编程语言提供的内建函数进行进制转换,但理解栈在这些转换中的运用原理,有助于更好地掌握数据结构和算法,特别是在没有现成工具可用的情况下。此外,栈在其他计算和问题解决中也有广泛...
进制间的转换 显示时,第一位为正负,其后为整数部分,空格后为小数部分,注释很清楚的~哈哈·祝愉快学习!
方便在二进制,十进制,十六进制间转换。很实用的工具。
(1)十进制转换为其他进制数:按位权乘以基数的N-1次方。 (2)其他进制数转换为十进制:整数部分除基数取余,小数部分乘基数取整。 四、具体转换方法 (1)十进制与二进制之间的转换: * 十进制转换为二进制:...
计算机中的进制转换是数字系统基础的重要组成部分,尤其在编程、计算和数据存储等领域中扮演着关键角色。这里我们将详细探讨各个题目所涉及的进制转换知识点。 1. 十进制数转换为二进制和十六进制: - 通常使用短...
总结,易语言的任意进制间的相互转换源码通过内置函数实现了数字的进制转换,其核心是`进制转换字符串`和`字符串转换进制`两个函数。理解并熟练运用这些函数,能够帮助开发者在易语言环境下轻松处理各种进制转换问题...
本项目“基于单片机(AT89C51)的进制转换及进制计算器”旨在利用AT89C51设计一个能够进行不同进制间转换的计算器。 进制转换是计算机科学中的基本概念,常见的有二进制、八进制、十进制和十六进制。理解并掌握这些...
"计算机各种进制转换练习题" 计算机进制转换是计算机科学中的一种基本概念,指的是将不同进制的数字进行相互转换,如十进制、 二进制、八进制、十六进制等。这种转换在计算机科学和编程中有着广泛的应用。 在本...
我试验时改良的程序,稍微罗嗦的些,功能还可以,进行2,4,8,16几种进制间的相互转换
进制转换练习题及答案 本资源是一个进制转换练习题及答案的PDF文件,涵盖了二进制、十进制、十六进制之间的转换、计算机内部信息存储和处理、ASCII码、汉字内码等知识点。 知识点1: 进制转换的基本概念 * 进制...
进制转换是计算机科学中的基础概念,涉及到二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)等不同数字系统间的转换。这些进制转换在编程、数据存储、硬件设计等多个IT领域都有广泛...
在“颜色进制转换.exe”这个程序中,用户只需输入或选择所需的颜色值,无论是十进制还是十六进制,程序将自动完成转换,显示对应的颜色代码。这对于快速检查和验证颜色值一致性,或者在不同平台间共享颜色信息,都是...
- 进制转换核心算法:实现不同进制间的转换逻辑。 - 错误处理:确保在输入无效或超出范围时能正确处理。 在具体使用该程序时,开发者需要了解如何调用这些函数,传递正确的参数,并根据需要处理返回的结果。例如,...
浮点数与十进制数转换是计算机科学中常见的数据处理任务,特别是在数值计算、编程以及数据解析等领域。本文将详细探讨浮点数与十进制数之间的转换原理及其在实际应用中的重要性。 首先,浮点数是一种表示实数的方式...