This commit is contained in:
许大仙 2024-08-17 15:20:15 +08:00
parent 6859f900d5
commit b61e1b0ab7

View File

@ -1156,11 +1156,11 @@ int main() {
> [!NOTE] > [!NOTE]
> >
> * 加法和减法是计算机中最基本的运算,计算机时时刻刻都离不开它们,所以它们由硬件支持支持。为了提高加法和减法的运行效率,硬件电路必须设计得尽量简单。 > * 加法和减法是计算机中最基本的运算,计算机时时刻刻都离不开它们,所以它们由硬件支持支持。为了提高加法和减法的运行效率,硬件电路必须设计得尽量简单。
> * 对于有符号位的数字来说,内存需要区分符号位和数值位:对于人类来说,很容易识别(最高位是 0 还是 1但是对于计算机来说需要设计专门的电路这无疑增加了硬件的复杂性增加了计算时间。如果能将符号位和数值为等同起来让它们一起参与运算不再加以区分这样硬件电路就可以变得简单。 > * 对于有符号位的数字来说,内存需要区分符号位和数值位:对于人类来说,很容易识别(最高位是 0 还是 1但是对于计算机来说需要设计专门的电路这无疑增加了硬件的复杂性增加了计算时间。如果能将符号位和数值为等同起来让它们一起参与运算不再加以区分这样硬件电路就可以变得简单。
> * 此外加法和减法也可以合并为一种运算加法运算。换言之减去一个数就相当于加上这个数的相反数5 - 3 相当于 5 +-310 --9相当于 10 + 9 。 > * 此外加法和减法也可以合并为一种运算加法运算。换言之减去一个数就相当于加上这个数的相反数5 - 3 相当于 5 +-310 --9相当于 10 + 9 。
> * 如果能够实现上述的两个目标,那么只需要设计一种简单的、不用区分符号位和数值为的加法电路,就能同时实现加法和减法运算,而且非常高效。其实,这两个目标已经实现了,真正的计算机硬件电路就是这样设计的。 > * 如果能够实现上述的两个目标,那么只需要设计一种简单的、不用区分符号位和数值为的加法电路,就能同时实现加法和减法运算,而且非常高效。其实,这两个目标已经实现了,真正的计算机硬件电路就是这样设计的。
> * 但是,简化硬件电路是有代价的,这个代价就是有符号数在存储和读取的时候都要继续转换。这也是对于有符号数的运算来说,计算机底层为什么使用补码的原因所在。 > * 但是,简化硬件电路是有代价的,这个代价就是有符号数在存储和读取的时候都要继续转换。这也是对于有符号数的运算来说,计算机底层为什么使用补码的原因所在。
* `最高位`表示`符号位`,由于符号位的存在,如果使用`原码`来计算,就会导致`计算结果不正确`,即: * `最高位`表示`符号位`,由于符号位的存在,如果使用`原码`来计算,就会导致`计算结果不正确`,即: