人的补语和人的补语有什么区别?还是没有区别?

问题描述 投票:0回答:2

C 编程语言 (K&R) 第 48 页上有一句话,“一元运算符 ~ 产生整数的补码;也就是说,它将每个 1 位转换为 0 位,反之亦然” ,这里的补码应该是按位求反运算吧?

在我看来,补就是补,不是补。其实CSAPP一书中特别提到了Ones的补码。是我太挑剔还是两者真的不一样?

我主要看的是K&R和CSAPP这两本书。另外,谷歌也找不到我的问题的答案。我想非常清楚地回答这个问题。

c
2个回答
0
投票

人的补语和人的补语有什么区别?还是没有区别?

“One'scomplement”是“ones'complement”的常见拼写错误(标点符号错误)。后者是常规的。前者的持续存在可能与以下事实有关:“二进制补码”是表示有符号整数的更流行替代方案的正确拼写/标点符号。

维基百科在有关格式的文章中注意到了这一细节,并在计算机编程的艺术中引用并引用了 Donald Knuth:

注重细节的读者和文案编辑应注意“二进制补码”和“个位补码”等术语中撇号的位置:二进制补码对 2 的一次幂进行补码,而个位补码则对 2 的一次幂进行补码。对一长串 1 进行补足。


0
投票

这是一个错字。

您在书中引用的“补码”的定义:

它将每个 1 位转换为 0 位,反之亦然

补码的定义:

二进制数的补码是通过反转(翻转)该数的二进制表示形式中的所有位而获得的值。

如您所见,它们是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.