计算机字符串 对应10进制数,计算机系统基础(五)十进制数的表示

本文介绍了计算机中ASCII码字符表示和BCD码的编码特点,包括它们在十进制数表示、符号处理、内存占用和计算效率上的区别。ASCII码常用于输入输出,BCD码适用于商业计算以减少转换。计算机内部主要用二进制,理解这两种编码有助于提高工作效率。
摘要由CSDN通过智能技术生成

http://kaito-kidd.com/2018/08/14/decimal-expression/

我们知道计算机中数字都是使用的二进制表示和运算,对于我们熟悉的十进制数字,可以通过数值进制公式进行转换后计算和显示。

但除了这种编码方式之外,计算机有时为了显示和计算方便,对十进制还定义了新的编码方式:ASCII码字符表示、BCD码表示。这篇文章我们来了解一下这2种编码方式的特点。

ASCCI码字符表示

如果只是对十进制数进行打印或显示,那么可以把十进制数看成字符串,直接用ASCII码表示,09分别对应ASCII码的30H39H,这种表示方式,1位十进制用8位二进制数表示。

用ASCII码表示的十进制又分为前分隔数字串和后嵌入数字串。

前分隔数字串

前分隔数字串将符号位单独用一个字节表示,放在数字串之前。

正号(+)用ASCII码2B(H)表示,符号(-)用2D(H)表示。

例如十进制数+236用前分隔数字串表示为0010 1011 0011 0010 0011 0011 0011 0110,对应的十六进制为2B 32 33 36,在内存中占用4个字节。

十进制数-2369用前分隔数字串表示为0010 1101 0011 0010 0011 0011 0011 0110 0011 1001,对应的十六进制为2D 32 33 36 39,在内存中占用5个字节。

可见,十进制数每增加一位,就要多一个字节表示对应数字。

后嵌入数字串

后嵌入数字串的符号位不单独用一个字节表示,而是嵌入到最低一位数字的ASCII码中。

正数的最低一位数字编码不变,负数的最低一位数字编码的高4位由原来的0011变为0111。

同样是上面2个数字,+236用后嵌入数字串方式表示为0011 0010 0011 0011 0011 0110,对应的十六进制为32 33 36,在内存中占用3个字节。

十进制-2369用后嵌入数字串方式表示为0011 0010 0011 0011 0011 0110 0111 1001,对应的十六进制为32 33 36 79,在内存中占用4个字节。

后嵌入数字串方式比前分隔数字串方式少占用一个字节,但对于负数来说,最低一位数字不是采用十进制数字的ASCII码,所以在显示或打印前必须先转换成可打印字符编码。

用ASCII码表示十进制是为了方便十进制数的输入和输出,但这种方式对于十进制数的计算很不方便。如果要对这种十进制数字进行计算,则必须要转换成二进制数或用BCD码表示十进制了。

BCD码表示

在数据输入输出量很大的商用领域,由于涉及到非常多的十进制数字计算,如果每次都要转换为二进制计算,再转换回十进制显示,那么这之间会对硬件的运算造成较大压力。如何解决这个问题,BCD码就是一种解决大量十进制数输入、输出、运算的场景的一种编码方式。计算机中可用专门的逻辑线路对BCD码进行计算。

十进制0~9共10个数字,因此可用4位二进制位表示即可。4位二进制位可以组合出16种状态,所以从16种状态中选取10种状态就可以表示十进制数,并且可以产生多种BCD码。

BCD码又分为有权BCD码和无权BCD码。

有权BCD码

有权码是指表示每个十进制数位的4个二进制位,都有一个确定的权,以下是常用的几种有权码方案:

d3c202da52c1481573b84b285fadd9be.png

其中最常用的编码是842码,它选取4位二进制数并按顺序取前10个代码与十进制数字对应,每位权从左到右分贝为8、4、2、1,因此称为8421码。

无权BCD码

与有权码相对应,每个十进制位没有确定的权,这种编码叫做无权码。

无权码方案中用的较多的是余3码和格码:

f1fe53f602afa98714c11c12a51795b7.png

余3码是在8421码的基础上,把每个代码都加0011形成的,优点是执行十进制数加法时,能正确进位,且减法运算提供便利。

格雷码规则是任何两个相邻的代码只有一个二进制位的状态不同,其余3个二进制必须相同,这样设计的好处在于从一个编码变到下一个编码试,只有一位发生变化,变码速度最快,利于电路的设计和运行。

使用BCD码会耗费更多的设备量,所以通常情况下,计算机内部一般使用二进制数进行数据的表示和运算。

总结

我们总结十进制数的编码方案:

十进制数字除了用数值进制转换编码外,还可以用ASCII码和BCD码进行编码和运算

ASCII码一般用于输入和输出的表示,转换位数一一对应,简单直观

BCD码则用于大量商业运算领域,减少十进制和二进制大量转换而提出的编码方案

计算机内部一般还是使用二进制数对数据进行表示和运算,我们对十进制数的编码方案了解即可

如果此文章能给您带来小小的工作效率提升,不妨小额赞助我一下,以鼓励我写出更好的文章!

计算机科学中,将字符串转换为十进制是一个基本操作。通常,这个字符串表示的是一个值的文本形式,我们可以通过解析这个字符串,并使用一定的值系统将其转换为对应十进制。以下是这个过程的一般步骤: 1. 检查字符串:首先确认字符串是否符合字的格式,包括正负号、小点等。 2. 基转换:如果字符串表示的是非十进制(比如二进制、八进制或十六进制),需要先将其转换为十进制。这通常涉及到解析字符串中的每个字符,将其对应到相应的值,并乘以其基的相应次方。 3. 十进制转换:对于十进制字符串,可以遍历字符串中的每个字符,将其从字符('0'-'9')转换为对应的整值,并按顺序乘以10的幂次累加到结果中。 以下是一个简单的例子,演示如何将一个十进制字符串转换为十进制: 假设我们有一个字符串 "123",我们需要将它转换为十进制。 ``` 1. 将字符串 "123" 分割为字符组:['1', '2', '3'] 2. 将每个字符对应的整值取出:[1, 2, 3] 3. 从左到右遍历这个组,每个值乘以10的幂次(根据其位置决定幂次),然后累加到总和中: - 第一个字符 '1' 对应的位置是0,10的0次幂是1,所以值是 1 * 1 = 1 - 第二个字符 '2' 对应的位置是1,10的1次幂是10,所以值是 2 * 10 = 20 - 第三个字符 '3' 对应的位置是2,10的2次幂是100,所以值是 3 * 100 = 300 4. 最后将这些值相加:1 + 20 + 300 = 321 ``` 转换完成,字符串 "123" 对应十进制为 321。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值