在编程的层面,首先1,2,3都是二进制整形变量,(为什么二进制?)我的理解是二进制运算没有九九乘法表这么庞大的规则,更方便。高低电平(电压)很容易表示并且很难出错,但是若要分成高低不同一系列电压。。。那是要求高成本高吃力不讨好的事情。简单说来就是钱多烧的。做出来也会很贵,你会不会买?(具体可参考模拟电路)下面几句是摘录:BasicsofBinaryNumbersForcomputers,binarynumbersaregreatstuffbecause:Theyaresimpletoworkwith--nobigadditiontablesandmultiplicationtablestolearn,justdothesamethingsoverandover,veryfast.Theyjustusetwovaluesofvoltage,magnetism,orothersignal,whichmakesthehardwareeasiertodesignandmorenoiseresistant.对于计算机,二进制数字是伟大的东西,因为:他们是简单的一起工作-没有什么大的加法表和乘法表学习,只是做同样的事情一遍又一遍,速度非常快。他们仅仅使用电压,磁,或其它信号,这使得硬件更易于设计和更抗噪声的两个值。本质上都是二进制数——假设是8位表示(16位就在前边加8个0,能表示更大的范围而不溢出):这是计算机眼中的1——00000001——=0+1这是计算机眼中的2——00000010——=2+0这是计算机眼中的3——00000011——=2+1二进制按位加法:case1:0+0=0case2: 0+1=1+0=1case3: 1+1=0,并且进位。可以用循环来写,但是理应有更加快捷的方式,我们来探索下:case1:相同case2:不同case3:相同,但是有进位。Ok,找到我们要的规律了,不考虑Carry(进位),就是XOR(异或)运算,而Carry本身是一个AND(与)运算。那么从数字电路入手,有:TruthTable:那么电路设计如下:首位加法(考虑输出进位):考虑被位的通用加法:多位加法:多位加法:
阅读全文 >