以下内容都是作者在阅读《深入理解计算机系统》时所遇到的有意思的编程问题,特此列出。
计算机算术运算的深刻理解
x-y<0不等于x<y,因为前者可能会产生溢出。甚至于也不能用表达式(-y<-x)来替代,因为在二进制补码表示中负数和正常的范围是不对称的。
当x为127,y为-2时,其补码分别为01111111和11111110,相减后得10000001(补码),即-127.结果显然是不对的,但如果使用x<y就不会出现这种问题。 对于-y<-x的情况,考虑-128的情况就可以知道了。当y=-128时,-y也是-128而不会变为128.
未经允许不得转载:TacuLee » 程序趣闻