正在加载中……
1
常识问题:加法的本质是什么?计算机二进制如何加减乘除?
电脑技术
2022/5/17 14:06:00
老贾/吉他福
访问量
328
支持
1
中立
1
反对
2
朗读功能:
此主题内容最后修改日期:2022 - 05 - 18 11:11:42
集合论数学认为加法仅仅是某种映射规则,是人为规定的种种规则之一而已。而对于减和乘除可以从加法规则推导变换而来。
计算机二进制也是如此,加法是基础,于是实现四则运算也就非常简单了,可以说二进制就是天生为了运算而生的进制。
加法
加法可以通过非常简单的逻辑门电路实现,下面的电路是一个异或门和与门的组合电路,A+B=CS。
减法
减法也按照加法计算,按照常识十进制的例子说,比如:
54-13=54+(99-13)-99
99-13就是把13"取反”,取反就是掰开每个数字用进制里最大的数9减,就是86。
对于取反这种事,位数多一些也一样,十进制取反比如6831就是9999-6831=3168,还是每个数字用9减。
于是就有了:
54-13=54+(99-13)-99=54+(13取反)-99=54+(13取反)-100+1=54+(13取反+1)-100
这个取反在二进制里特别简单,因为二进制取反就是用1减,显然就是1变0、0变1。
所以就和十进制类似的,比如8位二进制:
a-b=a+(b取反)-11111111=a+(b取反+1)-100000000
显然最后舍去最高位的进位就是减100000000了,或者说根本就不用管他,这个最高位的进位就当作不存在就成了。
但是因为二进制里的有符号数的最高位,是用来表示正负号的,0是正号,1是负号,于是这个减100000000就免除了,这是因为负数采用了一种“取反+1”的表示方法,而正数就是原码,想想看:
如果把符号位也当作数来计算,则进位出现的100000000就正好把符号位的1变成了0,或把0变成了1,当结果的符号位是0的时候是个正数,这个结果正好就成了。
当结果的符号位是1,则就意味着没有产生进位,就是a小于b的情况了,这时结果是负数,这个符号位的1正好就对了,不仅如此,这个结果实际上正好是负数结果的“取反+1”。
乘法
二进制乘法就是移位和加法的结合,左移一位就是乘以一次10,当然不移就是乘以1了,比如乘以a*1111,就是分解为:
a*1000 + a*100 +a* 10 +a*1
就是不停的左移就行了。
除法
除法用移位和减法结合,从最高位开始对着除数减,就跟小学做除法一摸一样,因为只可能是0或1,够减就是1,不够减就是0,所以就非常简单了,小数就不停的补位继续减就成了。
顺便说些跟音乐相关的内容~~~~
二进制和音乐
看着不起眼的二进制,却能非常高效的制造音乐,二进制的位叫做bit,8bit就是8位二进制数,这么简单的数字就足以制造出好听的音乐来了。
8bit音乐,通过操控各种波形制造器,脉冲波、三角波、正弦波、方波、锯齿波和各种噪音,8bit足够调动2^8=256个音调和音色,这已经足够了。
8bit电子音乐,灵感来自8位游戏时代旧电脑控制台的声音。这种音乐通常会反映或由来自被视为原始或"过时”的技术的声音组成。
"我喜欢听8位音乐,因为我从小玩Game Boy游戏长大,我喜欢这些游戏中的音乐。”