查看“︁补数”︁的源代码
←
补数
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{noteTA |G1 = Math |G2 = IT }} {{About|补数的一般概念|電腦科學常用的补数|二補數}} '''補数'''({{Lang|en|complement}})是对于给定的[[进位制]],相加后能使[[自然数]] a 的位数增加 1 的最小的数。可以在计算电路中,代替减<math>x</math>的操作,而仅仅使用加法器元件([[加法器]])的“加上<math>x</math>的补数(无视最高位的进位)”,达到相同的效果。 == 定义 == 设''b'' 进制表示自然数 ''a'' 至少需要 ''n'' 位数字,规定 * <math>b^n - a</math> 是 “''b'' 进制数 ''a'' 的关于'''基数的补数'''(''b'' 的补数)” * <math>b^n - a - 1</math> 是“''b'' 进制数 ''a'' 的关于'''减基数的补数'''(''b - 1'' 的补数,简称'''减补数'''、'''侪补数''')”。 例如,十进制自然数 61 关于[[基数]] 10 的补数是 <math>10^2 - 61 = 39</math>。二进制自然数 <math>10010_2 (= 18_{10})</math> 关于[[基数]] 2 的补数是 <math>2^5 - 18 = 1110_2 (= 14_{10})</math>。 由定义可以得出,''a'' 的'''[[基数]]的补数''' 加上 ''a'',可以得到位数多一位的最小的自然数(<math>= b^n</math>)。''a'' 的'''[[減基数]]的补数''' 加上 ''a'' ,可以得到位数不增加的最大的自然数(<math>= b^n - 1</math>)。 基数 ''b'' 在上下文中明确的时候,“在''b'' 进制中”的描述通常被省略。 但是,在[[基数]]不明确的情况下,“<math>\beta</math> 的补数”表示的可以是<math>(\beta + 1)</math> 进制的[[減基数]]的补数,也可是 <math>\beta</math> 进制的基数的补数,从而产生歧义(这两者的值不一定是相等的)。例如,仅仅说“9的补数”,无法确定指的是“10进制中的减基数的补数”还是“9进制中的基数的补数”。 在英文中,十进制的基数的补数记为 ''ten's complement'',减基数的补数称为 ''nines' complement''。二进制中,基数的补数称为 ''two's complement'',减基数的补数称为 ''ones' complement''。其他进制也有类似的称法。一些人,如[[高德纳]],建议采用[[撇号]]区分。这样,''four's complement''指的是四进制中的基数的补数。而''fours' complement''指的是五进制中的减基数的补数。但是,这并不是普遍的做法,而且在几乎所有情况下进制是明确的。多数作者写做 ''one's''和''nine's complement'',一些格式手册建议采用 ''ones''和''nines complement'',不采用撇号。 == 計算方法 == 对于N进制的自然数a,从个位开始的各位数字 : <math>a_0,a_1, ..., a_{r-1},a_r </math> 规定<math>a_r</math>不能为0。规定<math>b_i</math>的各位为: : b<sub>i</sub> = (N + 1) + a<sub>i</sub> 这时,N进制形如的 : <math>a_0,a_1, ..., a_{r-1},a_r </math> 数 <math>b</math> 即称为“<math>a</math> 的关于 '''<math>(N + 1)</math> 的补数'''”。 === 10进制的举例 === 求[[十进制]]数 2304671 的补数。由于 9 = 2 + 7 = 3 + 6 = 0 + 9 = 4 + 5 = 6 + 3 = 7 + 2 = 1 + 8 ,令'''N=9'''时,自然数'''2304671'''对应的補数为 '''7695328''' 。 7695328 + 1 = 7695329 ,因此'''N=10'''时,自然数'''2304671'''对应的補数是 '''7695329'''。 === 2进制的举例 === 二进制中有 1 + 1 = 0, 1 + 0 = 1,'''求1的补数'''只需简单地将0与1相互替换'''。'''([[位操作]]中的[[逻辑非]]运算)。 求[[二補數]](即补码),只需要将1的补数加1。 * 二进制的 101010110 对应的1的补数是 010101001。 * 2 的补数是 010101001 + 1 = 010101010。 == 参考文献 == '''JIS X 0005''':2002 情報処理用語(データの表現) 05.08 Donald E. Knuth 『The Art of Computer Programming Vol. 2 Seminumerical Algorithms Third Ed. 日本語版』 アスキー、2004年、191頁。 (ISBN 4-7561-4543-4) == 相关条目 == * [[加法器]] * [[二補數]] * [[有符號數處理]] [[Category:数字]]
该页面使用的模板:
Template:About
(
查看源代码
)
Template:Lang
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
返回
补数
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息