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