前言
在计算机系统中,规定数值一律用补码来表示和存储。因为使用补码可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
很多人很好奇为什么要使用补码表示和存储?直接使用原码表示多好,看上去更加直观和易于计算。
那么,为什么计算机使用补码比原码更好,又是如何通过补码来计算数值的呢?这其中的原理是什么?
什么是补码?
补码的定义:正数的补码与原码相同。负数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)再+1,即为负数的反码+1。
要了解补码首先要了解“模”,模是补码的基础,“模”是指一个循环周期的最大值,当超过这个最大值后就会开始新的周期,例如时钟的一个周期最大值是12,所以模就是12;一周的模是7天;一天的模是24小时。
补码就是通过“模”将减法变加法,通过最形象的时钟能最好理解:
假设当前时针指向8点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨(逆时针旋转)2小时:8-2=6;另一种是顺拨(顺时针旋转)10小时:(8+10)%12=6,这样就有 (8-2)%12=(8+10)%12=6 。
通过这个简单栗子,可以看出在以12为模的系统(时钟)里,