一个人的补遗是现实问题,还是历史性问题?

时间:2020-03-06 15:01:15  来源:igfitidea点击:

另一个问题是关于确定C中的奇/偶数的问题,对于C语言标准允许的基于补码的系统,惯用(x&1)方法已正确标记为已损坏。

系统真的存在于计算机博物馆之外的"现实世界"中吗?我从1970年代开始从事编码工作,而且我很确定自己从未遇到过这样的野兽。

有人在为这样的系统开发或者测试代码吗?而且,如果不是,我们是否应该担心这些事情,还是应该将它们与纸带和打孔卡一起放入101室...?

解决方案

我从来没有遇到一个补码系统,而且只要我们有,我就一直在编码。

但是我确实遇到了9的补码系统-HP-41c计算器的机器语言。我承认这可以被认为是过时的,而且我认为他们从来没有使用过C编译器。

这一切都取决于了解根源。
是的,从技术上讲这是一种古老的技术,我很可能会执行其他人在该问题中建议的操作,并使用取模(%)运算符来确定奇数或者偶数。
但是了解1s补码(或者2s补码)始终是一件好事。无论我们是否使用过它们,CPU一直都在处理这些问题。因此,理解这个概念永远不会受到伤害。现在,现代系统使之成为现实,因此我们通常不必担心诸如此类的事情,因此它已成为编程101课程的主题。但是我们必须记住,实际上某些人仍然会在"现实世界"中使用它……例如,与流行的看法相反,有些人仍然使用汇编!数量不多,但是直到CPU可以理解原始的Cand Java为止,仍然会有人必须了解这些内容。

哎呀,我们永远不知道何时会发现自己在做一些实际需要执行二进制数学运算的事情,而1s补数可能会派上用场。

去年某个时候,我们摘下了最后1960年代的Honeyboxen,这使其成为我们现场最古老的机器。这是两个的补充。这并不是说了解或者意识到自己的补体是一件坏事。只是,无论我们在工作中进行了多少计算机考古研究,我们今天都可能永远不会碰到一个补充问题。

我们更可能遇到整数方面的问题是字节序问题(我在看PDP)。此外,与整数格式相比,浮点格式还会遇到更多的"现实世界"(即今天)问题。

我从事遥测领域的工作,我们有一些客户使用的旧模数转换器仍使用1的补码。前几天,我只需要编写代码就可以从1的补码转换为2的补码以进行补偿。

所以是的,它仍然在那里(但是我们不会经常遇到它)。

我在80年代使用的CDC Cyber​​ 18是一台1s补码机,但是那是近30年前的事,从那以后我再也没有见过(但是,那也是我最后一次在非PC上工作)

RFC 791第14页将IP标头校验和定义为:

The checksum field is the 16 bit one's complement of the one's complement sum of all 16 bit words in the header.  For purposes of computing the checksum, the value of the checksum field is zero.

因此,在发送的每个IP数据包中,人们的补充在现实世界中仍然大量使用。 :)