怎么样用电脑用减法(没有加法器的计算机,如何才能计算减法?)
背景提要
1)计算机为什么不支持减法?
计算机以二进制保存数据,高压电流表示1,低压电流表示0,
0+0时,低压电流+低压电流,输出低压电流,所以0+0=0;
0+1时,低压电流+高压电流,输出高压电流,所以0+1=1;
1+1时,高压电流+高压电流,输出特高压电流,当检测到特高压电流时,将向下一根电路中输出高压电流,同时本电路输出低压电流,所以1+1=10,二进制10表示2;
从计算机设计开始,就不准备计算减法操作,因为无法输入负电流,同时也不支持反方向输入电流,从设计之初,就只设计了加法器,没有减法器,那么他是如何计算减法的呢?
2)计算机如何表示负数
符号位:数字在计算机中以二进制机器数进行保存,例如00000011代表3,100000011代表-3,机器数的最高位代表符号位,0代表正数(+),1代表负数(-);
原码、反码、补码原码
正数:同二进制一致,符号位为0
负数:同数的绝对值的二进制一致,符号位为1
正数:1->原[00000001]负数:-1->原[10000001]反码
正数:与原码一致
负数:在原码基础上,符号位不变,其他位取反
正数:1->原[00000001]->反[00000001]负数:-1->原[10000001]->反[11111110]补码
正数:与原码一致
负数:在反码基础上,加1
正数:1->反[00000001]->补[00000001]负数:-1->反[11111110]->补[11111111]数字在计算机中存储过程
数字在计算机中存储过程图
模拟计算机减法操作
计算机在计算减法操作时,通过减一个数,就是加一个数的负数的方式,统一转换为加法操作。
1)举例1-1
1-1=1+(-1)->原[00000001]+原[10000001]->反[00000001]+反[11111110]->补[00000001]+补[11111111]=补[00000000]=原[00000000]=0
2)举例3-2
3-2=3+(-2)->原[00000011]+原[10000010]->反[00000011]+反[11111101]->补[00000011]+补[11111110]=补[00000001]=原[00000001]=1
3)举例-3-2
-3-2=-3+(-2)->原[10000011]+原[10000010]->反[11111100]+反[11111101]->补[11111101]+补[11111110]=补[11111011]=原[10000101]=-5总结
1)二进制最高位表示符号位,正数位0,负数为1
2)正数的原码、反码、补码一致,三码合一
3)负数原码除符号位,取反得反码,反码加1得补码
4)两数相减相当于一个数加另一个数的负数=一个数的补码加另一个数的补码
5)计算机保存时,保存的是补码,计算也是按照补码计算的,结果也为补码,需转换为原码