为什么计算机用补码存储数据
俗话说:眼看他起高楼,眼看他宴宾客,眼看他楼塌了。我想这句话放在我们做技术的,也很合适 —— 基础不牢,地动山摇。
尽管我们很多人不是做基础开发的,但是操作系统、数据结构和算法、计算机网络、设计模式 …… 这些 IT 领域的基础性学科,对于我们来说其实挺重要的。
本文将尝试从理性结合感性的角度去说明为什么计算机用补码存储数据,当我们明白这个问题后,那么,我们就可以去理解另一个衍生问题 —— 数据溢出。我们先来看一段关于数据溢出的 Java 代码片:
/* int是有符号数,32位存储,表示范围是-2^31~2^31-1(即-2147483648~2147483647)*/
int i = Integer.MAX_VALUE; // i为2147483647
i += 1; // 加1后,引起数据溢出,则i为-2147483648
加法器
计算机只有加法器没有减法器,两个数的减法运算会被计算机转换为加法运算。
模、补数
在日常生活中,有许多化减为加点例子。我们以最平常的钟表为例,时针逆时针拨 x(0<x<12)格和时针顺时针拨12-x格,效果是相同的。比如,时针从10点调整到5点有以下两种方法:
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content