Week_1二进制数的算数运算与二进制代码

一、二进制数的算术运算

1.无符号二进制的算术运算
无符号数(Unsigned number)是相对于有符号数而言的,
指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值。
无符号二进制数的加、减、乘、除四则算数运算法则其实与十进制数的四则算数运算法则是一一对应的。

(1)加法运算
加法运算法则:0+0=0,0+1=1,1+0=1,1+1=10(10就表示进位,要向高位进1)。

做二进制加法运算的时候,需要将两个二进制数右对齐(也就是从最低位开始对齐),数值大的放上面(通俗理解就是二进制位数多的放上面),数值小的放下面(通俗理解就是二进制位数少的放下面),同时保证两数的每一位二进制位也对齐,如果两个二进制位仅有一位是1,相加结果为1,如果两个二进制位为0,则结果为0,如果两个二进制位均为1,则结果为10(10就相当于十进制中的2),就是向高位进1(也就是逢二进一规则),与十进制中的逢十进一意思一样。
在进行二进制加减法运算时,最关键的一点就是逢二进一,而借1当2!如果你熟悉十进制的加减运算法则,那是逢十进一,借1当十。这样就会比较好理解,无符号的二进制运算法则就是将十进制中的10换成2。

(2)减法运算
减法运算法则:1-1=0,1-0=1,0-0=0,0-1=-1(这里记得需要向最高位借1)。

做二进制加法运算的时候,需要将两个二进制数右对齐(也就是从最低位开始对齐),数值大的放上面(通俗理解就是二进制位数多的放上面),数值小的放下面(通俗理解就是二进制位数少的放下面),同时保证两数的每一位二进制位也对齐。如果两个相减的二进制位同为0或者1,则结果为0,如果被减数的二进制位为1,减数的二进制位为0,则结果为1,如果被减数的二进制位为0,减数的二进制位为1,则需要向高位借1,此时是借1当2,与十进制中借1当10一个意思。

(3)乘法运算
乘法运算法则:0 * 0=0,0 * 1=0,1 * 0=0,1 * 1=1

只有当两个相乘的二进制数都为1时,相乘的结果才为1,两个相乘的二进制数中只要有一位为0,结果就是0,这与十进制中的乘法运算法则是一样的。
乘法运算法则中,乘数的每一位要与被乘数的每一位分别相乘,而不仅仅是对应位相乘,而且乘数的每一位与被乘数的每一位相乘的结果的最低位要与对应的被乘数位上下对齐,规则与十进制是一样的。

(4)除法运算
除法运算法则:当被除数大于除数时,商是1,当被除数小于除数时,商是0

这个与十进制的除法类似,因为二进制只有0和1,因此它的上也只能是0和1,
千万不要整出2,3,4,5,6,7,8,9来!!!

2.带符号二进制数
上文所提到的二进制数,没有考虑到符号问题,所指的都是无符号数。但实际上数字是有正、负符号的。

以数字7为例,按照习惯的数学表示方法,正数7用+7表示,二进制为+111;负数7用-7表示,二进 制数为-111.但在数字系统中,符号“+”、“-”也要数字化,一般将所对应的二进制数最高位增加多一位用来设为符号位,用“0”表示“+”、用“1”表示“-”。

为了区分一个符号数的“+”、“-”符号数字化前后的两种表示方法,引入真值和机器数两个术语。

真值:在一个二进制数前面用“+”、“-”表示正、负数的这种二进制数叫做真值。
机器数:将“+”、“-”符号用二进制码“0”、“1”表示的二进制数叫做机器数。数据最后存到计算机中就是用机器数来表示的

如下:

+7 -> +111 -> 0111
-7 -> -111 -> 1111
三个数分别代表:十进制数、真值和机器数。

二、二进制代码

1.二–十进制码(BCD码) Binary-Coded Decimal

BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

分类

8421

8421
BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。

5421和2421

5421 BCD码和2421
BCD码为有权BCD码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。这两种有权BCD码中,有的十进制数码存在两种加权方法,例如,5421
BCD码中的数码5,既可以用1000表示,也可以用0101表示;2421 BCD码中的数码6,既可以用1100表示,
也可以用0110表示。这说明5421 BCD码和2421 BCD码的编码方案都不是惟一的,表1-2只列出了一种编码方案。 上表中2421
BCD码的10个数码中,0和9、1和8、2和7、3和6、4和5的代码对应位恰好一个是0时,另一个就是1。就称0和9、1和8互为反码。

余3 码

余3码是8421 BCD码的每个码组加3(0011)形成的。常用于BCD码的运算电路中。 余3循环码
余3循环码是无权码,即每个编码中的1和0没有确切的权值,整个编码直接代表一个数值。主要优点是相邻编码只有一位变化,避免了过渡码产生的“噪声”。

2.格雷码Binary Gray Code

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray
Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。 [2]
在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码有多种编码形式。

(1)格雷码转化为二进制码

使用格雷码的最高位作为二进制的最高位,二进制次高位产生过程是使用二进制的高位和次高位格雷码相异或得到,其他位的值与次高位产生过程类似。假设二进制和格雷码各个位分别使用如下字符表示:

n 位的二进制:Bn、Bn-1、Bn-2…B2、B1、B0
n 位的格雷码:Gn、Gn-1、Gn-2…G2、G1、G0

转换公式:
Bn =Gn;
Bi-1 = Bi ^ Gi-1 (i = 1、2、…、n-1)

(2)二进制码转化为格雷码

二进制的最高位作为格雷码的最高位,次高位的格雷码为二进制的高位和次高位相异或得到,其他位与次高位类似。假设二进制和格雷码各个位分别使用如下字符表示:

n 位的二进制:Bn、Bn-1、Bn-2…B2、B1、B0
n 位的格雷码:Gn、Gn-1、Gn-2…G2、G1、G0

转换公式:
Gn = Bn
Gi-1=Bi ^ Bi-1 (i = 1、2、…、n-1)

3.ASCII码

ASCII (American Standard Code for Information
Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准
ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符.

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7
位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符 [1] 。其中:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符)
如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;
通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等; ASCII值为8、9、10 和13
分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响 [1] 。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1
[1] 。 后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII
码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值