【小狂】如何在计算机内表示十进制数字! #计算机知识点

软考程序员:在计算机如何表示十进制数字?

大家好,这里是小狂。今天继续来聊软考程序员中的内容。今天要了解的是时间之数字在计算机中是如何表示的。这节内容大部分都是概念,去了解一下即可。现在开始。

在软考程序员这本书里给介绍了三种表示时间值编码的方式。首先来了解一下BCD编码。在BCD编码中分为两种,一种叫8421BCD码,另一种叫余3BCD码。

·第一种8421BCD码是一种加权编码,具体看一下。这种编码对于了解编码系统的人来说是最熟悉不过的,就是很正常的从0一直往上加即可。比如一代表0001,二代表0010,30011,以此类推。这样在每一个位表示一,就是它的对应的全值。比如在最后一位一,代表的是1,然后是2,然后是4,然后是8。这种编码方式就叫做8421BCD码。


可是要想一下大部分的系统可是要用数字的递增来进行某种变换。比如光照,可能会用1-10这种一点点递增的方式来代表光的颜色或者增强的方式。但是如果某一位上发生了传输错误,就是如果一变成了0或者0变成了1,那么这种间径变化有可能是一种跳跃式的变化,就有可能是原先是70111,它变成8的时候1000,需要变换4个位置。


可是一旦某一个位置发生了错误,就会变成了其他的数字,这个数字离7要远的许多。所以这种8421BCD码在传输过程中不太安全,要换一种无全码。

·接下来介绍一种于3BCD码。于3BCD码是在8421BCD码演变而来,它的编码方式是从8421BCD编码上加3,3在二进制表示又是0011,也就是加3,所以最初表示0的000,在余3BCD编码中用0011表示。原先用1000表示的8再加上3,在余3BCD码中用1011表示,这是一种无全码,也叫做余3BCD码。但这种方式的编码也不太适合于渐进式编码储存,这样一个传输错误有可能也会导致发生了很大的错误。


·接下来要介绍另一种编码方式叫做格雷玛。看下图,在一些场景中往往需要按照数字顺序变化来处理一些事情,比如可以用0-9的变化进行渐变色的处理。可是用BCD编码会出现这样一个问题,因为BCD编码是一种加权编码,每一位的变化有它固定的全值,越是靠左边,它所在的全值就变化的更大。


假如电路出现了某种问题,比如静电导致输出的电信号出错,对于有权变骂中可能仅仅一味的变化就会出现很明显的错误,比如从7到8,这就是我之前所说的需要变化4个位,但是为了避免这些问题就出现了格雷玛。

接下来介绍一下格雷玛的编码的思想是什么?首先看一下这幅图,直接看格雷玛,可以发现每相邻两位的格雷玛只需要变换一位,从0到1只变换了最后末尾的1,从1变2只变换了默数第二位的0变成了1。可以发现这种只变换一位的编码方式在传输过程中就算是发生了错误也仅仅是一部分的小错误,这对于加权的编码来说要方便的多。


但是这种编码方式是如何来的?看一下下面的方式,当二进制转化为格雷玛时是这样做的。最高位保持不变,然后第二位为第一位和第二位相加,比如用1+0就等于1,第三位为第二位和第三位相加就是0+0等于0,第四位为第三位和第四位相加0+1等于1,所以9的格雷码编码为1101。


这是将二进制的编码转化为格雷码的方式,假如给了一个格雷码,要怎么转化为它的二进制编码?

再来举个例子,比如10的格雷码是1111,转换为二进制的规则:

·1.第一位加第二位:1+1=0。

·2.第一位加第二位:1+1=0。

·3.上一步得到的值去加下一位:0+1=1。


·4.最后得到的编码为:1010就是格雷码10的二进制码。

通过对比可以发现,格雷玛在进行渐变的过程中只需要变化其中一位,这也大大降低了如果出错造成的影响的程度。

今天的内容就到这里,下期讲一下其他字符编码,比如字母或者汉字,下期再见,拜拜。

发布于 2024-11-20
16
目录

    推荐阅读