为了将减法以加法的形式进行实作,减少电路开销(省去减法器)。
一般来说,讨论补数会考虑到两种形式,在基底(Base)为r的条件下,讨论以下
举例来说,以基底为10的数,我们会讨论其10的补数和9的补数
定义:有一数字N,基底为r,共有n位数,则
的补数:
的补数:
观察:的补数 = 的补数
范例1 : 有一数字135( N ),基底为10( r ),共有3( n )位数
的补数 :
的补数 :
的补数 的补数
范例2 : 有一数字,基底为,共有位数
的补数 :
> 10000000
> - 1101100
> ---------
> 0010100
的补数:
> 1111111
> - 1101100
> ---------
> 0010011
的补数 的补数
范例1. 计算
由於M为五位数,N为四位数,两位数相同才可进行运算,将N改为五位数,变成03250
原式 使用10的补数转换後
> 72532 > 72532
> - 03250 --> > + 96750
> ------ > -------
> 69282 > 169282 (1为进位,将其舍去)
减掉某一个数事实上就是加上他的补数
范例2. 计算
由於M为四位数,N为五位数,两位数相同才可进行运算,将M改为五位数,变成03250
原式 使用10的补数转换後 将计算得到的结果再做10的补数并加上负号
> 03250 > 03250 > 100000
> - 72532 --> > + 27468 --> > - 30718 --> 取负号 --> -69282
> ------ > ------- > -------
> -69282 > 30718 > 69282
范例3. 计算
1.将1000011转换为补数形式(使用2的补数)
原式 使用2的补数转换後
> 1010100 > 1010100
> - 1000011 --> > + 0111101
> -------- > ---------
> 0010001 > 10010001 (1为进位,将其舍去)
范例4. 计算
将1010100转换为补数形式(使用2的补数)
原式 使用2的补数转换後 将计算得到的结果再做2的补数并加上负号
> 1000011 > 1000011 > 10000000
> - 1010100 --> > + 0101100 --> > - 1101111 --> 取负号 --> -0010001
> -------- > --------- > ---------
> -0010001 > 1101111 > 0010001
为了表示一个有号数,我们将一个数字的最左边位元做为表示符号的用途,一般来说,0表示正数,1表示负数。
范例1. 使用8 bit 二进位有号数来表示-9
9的二进位无号数形式0001001
这里我们必须将最左边的bit用来表示正负号,因此我们只使用7个bit来表示这个数的数值大小,而表示数值大小我们有三种方式
1. 二进位 2. 1的补数 3. 2的补数
0001001 1110110 1110111
1. 有号二进位 2. 有号1的补数 3. 有号2的补数
[1]0001001 [1]1110110 [1]1110111
通常情况我们使用2的补数来做为表示,原因为使用二进位表示法和1的补数表示法,会存在0有两种不同的表示法,且两者皆无法表示-8,而2的补数不存在这一些问题,因此我们使用2的补数做为表示有号数的方式。
对一个有n bit的二进位系统而言
无号数范围 ~
有号数范围 ~
以4 bit的二进位系统而言
无号数范围 ~
有号数范围 ~
我们使用有号8 bits的二进位表示法来表示-9
有号2的补数
9 = 0001001 (只使用7个bit)
-9 = 11110111 (加上符号表示的bit)
2的补数
9 = 00001001 (使用8个bit)
-9 = 11110111
小结:n bits的二补数表示法 = (n - 1)bits有号二的补数表示法
范例1.
十进位 7 bits二进位 有号2的补数
6 0000110 0_0000110
13 0001101 0_0001101
-13 1_1110011(取13对2的补数後加上符号)
------------------------------------------------------
> 6 有号2的补数 > 00000110
> +(-13) --------> > + 11110011
> ------ > ----------
> -7 > 11111001
> ^
> 负数符号 後方7bit为7的2的补数
假设一个8 bit系统的有号二补数的加法
> 65 > 01000001
> + 70 > + 01000110
> ---- > ----------
> 135 > 10000111
加完之後我们会发现值变成负的,这是因为8 bit二埔数系统表示的值范围在-128 ~ 127,而65 + 70 = 135,这个值超出了表示范围,因此出现错误的结果,这样的现象称为溢位。
使用一组4 bit来表示十进位0 ~ 9。
范例 1:
好处:快速将十进位转换到二进位,有些无法以二进位有限位数表示的小数,如0.2,使用BCD可以非常简便的表示出来
坏处:浪费记忆体中间,本来4 bit可以表示成16种组合,现在只能表示成10种组合
<<: ISO 27001 资讯安全管理系统 【解析】(十五)
>>: [无广告]自动封锁,诈骗电话,骚扰电话,行销,广告,推销,来电未显示,不明的电话,响一声就挂,一接就挂,一接秒挂
打包 Bundle bundle 的英文原意是指将东西捆成一綑, 而在程序用语中 所谓的 bundl...
欲找,RS可以指定汇出的档案名称否,结果看到这个. URL access parameter ref...
工具介绍 今天要体验的工具是hydra,有别於先前体验过的其他工具,虽然也是透过字典档的形式,但它支...
I2C是什麽? I2C,又称 I²C(Inter-Interated Circuit),在 I2C ...
在 KPI 的层级中,提到在分成几种 Level 之前,有列出三组最重要的 Search Conso...