一补数与二补数
发布时间:2018-07-01 22:15:22
发布时间:2018-07-01 22:15:22
一补数与二补数(1's Complement and 2's Complement)
二补数 (2's complement) :是一种用二进位表示有号数的方法,也是一种将数字的正负号变号的方式,常在计算机科学中使用。一个数字的二补数就是将该数字作位元反向运算(即一补数),再将结果加 1,即为该数字的二补数。在二补数系统中,一个负数就是用其对应正数的二补数来表示。优点:二补数系统的最大优点是可以在加法或减法处理中,不需因为数字的正负而使用不同的计算方式。 只要一种加法电路就可以处理各种有号数加法,而且减法可以用一 个数加上另一个数的二补数来表示,因此只要有加法电路及二补数电路即可完成各种有号数加法及减法,在电路设计上相当方便。特点:二补数系统的 0 只有一个表示方式,这点和一补数系统不同(在一补数系统中,0 有二种表示方式),因此在判断数字是否为 0 时,只较比对一个不同的条件即可。
补数和负数
再转载一篇“补数和负数”,将知识整理补充全面。转自:【The Life, The Code】补数表示法 1. 补数的意义:在计算机执行算术运算时,对于减法运算,为求简化电路的设计起见,均使用补数(Complement) 的原理,使减法运算利用补数及加法运算来取代。 2. 补数的定义:对任一以 b 为基底 (Base, Radix) 的非负数 N,存在有二种补数表示法,即 b's 补数及 (b-1)'s 补数,兹分述于下: a. b's 补数定义 若 N 为一以 b 为基底的非负数,设其整数部份含有 n 位元,小数部份含有 m 位元,则 N 的 b's 补数定义为 bn - N (N0) 0 (N = 0) 注:此定义可避免出现两种不同的表示式来代表 0。 例:若一正数 N=31.4,且基底 b=9,则其 9's 补数可如下求出: 解:由题意知整数部份 n=2,小数部份 m=1,代入公式可得 92 - 31.4 = (100)9 - (31.4)9 = (57.5)9 b. (b-1)'s 补数定义 若 N 为一以 b 为基底的非负数,设其整数部份含有 n 位元,小数部份含有 m 位元, 则 N 的 (b-1)'s 补数定义为 bn - b-m - N 注:此定义并未针对 N=0 特殊处理,因此会产生不同的 0 的表示式,造成溷淆。 例:如上例,正数 N=31.4,基底 b=9,则 8's 补数可如下求出: 解:由题意知整数部份 n=2,小数部份 m=1,代入公式可得 92 - 9-1 - 31.4 = (100)9 - (0.1)9 - (31.4)9 = (57.4)9 c. 根据上述定义,任何补数均可求得,惟需代公式求算嫌繁琐;因此一般均有较速简易的 求补数方法,兹分述如下: (i) (b-1)'s 补数求法 将每一位元以 (b-1) 减去其值,即可得 (b-1)'s 补数。 (ii) b's 补数求法 将 (b-1)'s 补数之最小一位加 1 即可得 b's 补数。 b's的补数值=(b-1)'s补数值+(最小位加1) 注:二进位数值求 1 的补数,只要将原来数值中位元为 1 的改为 0,位元为 0 的改为 1, 便可得 1 的补数,至于 2 的补数则只需将 1 的补数值的最小位加 1 即可。 范例:计算二位数之 1's 补数及 2's 补数 (1) 1010101 (2) 10000 注:常考题:求二进位的一补数 (1's complement) 或二补数 (2's complement)负数表示法 假设有一正数X其在二进位数字系统中表示如下: X=0Xn-2Xn-3......X1X0 其中符号位元 0 代表此值为正数, Xn-2Xn-3......X1X0表示此正数在计算机中的二进位值。 注:正数衹有上述一种唯一的表示法。 在计算机中,常见的负整数表示法有以下三种 (1)符号大小值法(Sign Magnitude) (2)一补数法(1's complement) (3)二补数法(2's complement),兹分述于下: (1) 符号大小值法: -X=1Xn-2Xn-3......X1X0 其中符号位元 1 代表此数为负数,此种表示法正数与负数之间衹有符号位元不同。 (2) 一补数法 此法是将二进位值(包含符号位元)取一补数。 -X=1X'n-2X'n-3......X'1X'0 (3) 二补数法 此法是将二进位值(包含符号位元)取二补数。 -X=1X'n-2X'n-3......X'1X'0 + 00.....001 注:符号大小值法及一补数法有 +0 与 -0 的区别,而二补数法没有区别。