前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机组成原理-计数制与定点数编码

计算机组成原理-计数制与定点数编码

作者头像
DearXuan
发布2022-03-22 11:49:16
1.1K0
发布2022-03-22 11:49:16
举报
文章被收录于专栏:DearXuan的博客文章

进位计数制

r进制转10进制

设r进制数从左到右分别为 R(n) R(n-1) R(n-2) … R(1) R(0),则该进制数转换为十进制是

R(n)×r^n + R(n-1)×r^(n-1) + ... + R(1)×r + R(0)×1

当 r > 9 时,通常用大写字母来表示 10,11 等,例如 A=10, B=11

10进制转r进制

使用除余方法来转换进制

不断地将10进制数除以r,每次得到的余数都写在上次的余数之前,最后得到的数字就是r进制数

例如将 19 转换为 2 进制,不断地除以 2,得到的余数分别是

代码语言:javascript
复制
19 ÷ 2 = 9 ...... 1
 9 ÷ 2 = 4 ...... 1
 4 ÷ 2 = 2 ...... 0
 2 ÷ 2 = 1 ...... 0
 1 ÷ 2 = 0 ...... 1

因此最后结果是 10011

小数转换

r进制转10进制时,小数部分继续按照上面的公式计算即可,如二进制下的 0.1 转换成10进制是

0.1 × 2^(-1) = 0.5

十进制转r进制时,不断地将小数部分乘上r,并取整数部分,例如将 0.123 转换为 8 进制

代码语言:javascript
复制
0.123 × 8 = 0.984
0.984 × 8 = 7.872
0.872 × 8 = 6.976
0.976 × 8 = 7.808
0.808 × 8 = 6.464
...

因此转换结果是0.07676…

转换时出现无限小数是正常的,只需要保留有效位数即可

真值与机器数

真值是符合人类习惯的数字,是带有符号的

机器数是存粹的以数字形式保存的数字,它不带有任何符号,而是把符号也抽象为一个数字,例如用 1 表示正数,0 表示负数

考点总览

字符与字符串

ASCII码

英文字符在计算机中使用ASCII码表示

ASCII总共有128个字符,因此只需要7位,而在计算机中,使用一个字节表示一个ASCII字符,其中最高位置0

以下是ASCII码表

32~126为可印刷字符,其它字符为控制、通信字符

需要记忆的特殊位置有:

0: 48

A~Z: 65~90

a~z: 97~122

汉字编码

在1980年,中国推出了GB-2312标准,总共拥有7445个常用汉字

GB-2312标准采用区位码来表示汉字,共有94个区和94个位,区和位分别使用一个字节表示,一个汉字字符占两个字节

由于汉字编码也使用了ASCII中的控制字符,为了避免冲突,需要将区位码全部加上32,这样就避开了ASCII码中的控制字符区域,将区位码加上32就得到国标码(GB-2312)

为了避免国标码与ASCII码冲突,在存储时,需要将国标码全部加上128,这样所有的汉字都落到了128255的范围,而ASCII码全部落到了0127的范围,于是得到了汉字内码

在输入汉字时,采用输入码,例如拼音,五笔

在输出汉字时,采用字形码,字形码用来显示出汉字的图形

字符串

字符串就是一个字符类型的数组,在计算机中,根据字符位置,按顺序保存字符,通常用”\0”(00H)表示字符串结束

考点总览

定点数

定点数是指小数点位置固定不变的数,例如 12, 5.008

无符号数

无符号数是指整个字长的全部二进制位均为数值,而非符号。因此一个8位二进制数可以表示的范围是 0~255

在讨论无符号数时,如果没有特别说明,一律默认整数,而非小数

有符号数

有符号数的二进制位的最高位用于表示符号,称为符号位,通常用1表示正数,用0表示负数。后7位用于表示数值部分,称为尾数。

表示定点整数时,默认小数部分为0,此时小数点位于第8位后面,即末位的位权为2^0

表示定点小数时,默认整数部分为0。此时小数点位于第1位后面,即末位的位权位2^(-7)

原码

原码是指尾数用来表示真值的的绝对值,符号位 0/1 表示 正/负

已知27的二进制表示为 11011,如果用原码表示 +27,则应该是

0 0011011

已知0.875的二进制表示为 111,如果用原码表示 -0.875,则应该是

1 1110000

原码表示的范围为:整数-127~127,小数0~0.9921875

真值0具有两种原码表示形式,分别是 +0 和 -0

反码

反码的最高位也是符号位,当符号位为0时,反码与原码相同,当符号位为1时,反码的数值位与原码相反。无论是整数还是小数都一视同仁

代码语言:javascript
复制
原码:0 0011001
反码:0 0011001
 
原码:1 0011001
反码:1 1100110

同样反码的真值0也有两种形式

补码

对于正数来说,补码就是原码;对于负数来说,补码是反码末位加一

代码语言:javascript
复制
原码: 0 0011001
反码: 0 0011001
补码: 0 0011001
 
原码: 1 0011001
反码: 1 1100110
补码: 1 1100111(注意这里可能需要进位)

在补码中表示 -0 时,其反码是

1 1111111

在最低位加一并不断进位,则变成

0 0000000

最高位前面的1被丢弃,恰好就是 +0 的补码

因此在补码中真值0只有一种形式,即 +0 的形式。多出来的 -0 形式被特殊定义

如果用补码表示定点整数,则”1 0000000”表示-128

如果用补码表示定点小数,则”1 0000000”表示-1

使用补码能够让减法运算变得简单,因为在加减运算时,只需要将整个补码看作一个二进制数,然后连同符号位一起相加(无论是加法还是减法都是相加),最终得到的就是计算结果的补码

移码

移码只能用来表示整数,只需要把补码的符号位取反就能得到移码

移码的好处在于能够使用硬件快速比较大小

如上图所示,当符号相同时,随着数字的增大,移码数值位也在不断变大。因此在比较整数大小时,只需要按顺序从最高位开始注意比较即可

考点总览

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年3月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进位计数制
    • r进制转10进制
      • 10进制转r进制
        • 小数转换
          • 真值与机器数
            • 考点总览
            • 字符与字符串
              • ASCII码
                • 汉字编码
                  • 字符串
                  • 定点数
                    • 无符号数
                      • 有符号数
                        • 原码
                          • 反码
                            • 补码
                              • 移码
                                • 考点总览
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档