编程爱好者联盟 2016-11-10
密码终于找回了,原来是我邮箱把改密链接的邮件当垃圾邮件了……
回到正题,这是道面试题,原话大致是这样的:
[blockquote]
n+1<n成立吗?请说明。
[/blockquote]
当时我听到这个题后直觉是成立的,但是想不到怎么回事,后来别人告诉我说是在溢出的情况下会出现,这下就明白了。
这关系到寄存器存储的知识。
一个寄存器有固定的位数,如8位寄存器,16位寄存器等等,指的是这个寄存器能存储多少个1或0,例如八位寄存器,最多就是往这个寄存器中存入8个1,即255。如下图所示:
那么,有人问了,这和n+1<n有什么关系?
有关系。
理论上,起码我不知道,数的界限在哪里,但是在计算机中,存储数据的寄存器确实有限制的,就如上面的那个八位寄存器,最大8个1,255.
那么,问题来了,假如这个寄存器已经是8个1了,那么它再加1呢?
有人说了,256呗!即100000000。
没错,数学上是没错,但是寄存器怎么存呢?
当它加一后,如下图所示:
寄存器只有八位,存了后面8个0,那第一个1怎么办,扔了!
然后,这个寄存器就成这样了
不用我说这是几了吧?
所以,n+1<n就成立了。