繁体   English   中英

算术运算符如何在python中工作?

[英]How do arithmetic operators work in python?

我想知道“ +”运算符在python中如何工作,或者实际上任何基本算术运算符如何工作。 我对这个主题的知识非常有限,所以我希望这里不再重复这个问题。

更具体地说,我想知道这段代码:

a = 5
b = 2
c = a + b
print (c)

运行时产生c = 7的结果。 电脑如何执行此操作? 我在Reddit上发现了一个线程,该线程解释了计算机如何以二进制形式( https://www.reddit.com/r/askscience/comments/1oqxfr/how_do_computers_do_math/ )执行计算。 但是,我无法理解的是计算机如何知道如何将5和2的值转换为二进制,然后执行计算。 是否有针对所有整数或以10为底的数字执行此操作的设置公式? 还是在更深的硬件级别上发生了其他事情?

再次抱歉,如果这个重复或问题看起来完全愚蠢,我似乎无法理解python如何获取任意两个数字然后求和,相加,相除或相乘。 干杯。

很酷的问题。

首先,我认为您不能键入a + b = c 宁愿是c = a + b

当计算机对此进行计算时,首先将2和5转换为二进制。 所以2给出10,而5给出101。

这两个二进制数的添加方式与添加两个基数十的数字相同,从而得到111,然后将其转换回为7的基数十。

数字始终为二进制。 这样一来,计算机就无法将其保留在不同的数值系统中(嗯,有三元计算机,但是这是罕见的例外)。 十进制系统仅用于“人类表示”,因此更易于阅读,但是所有符号(包括文件中的符号"5" ,它只是一个字符)都通过某种编码(例如, ASCII)。 这些数字当然是二进制的,只是计算机知道(通过编码规范),如果在某些字符串的上下文中存在1000001 ,则它必须显示符号a (对于ASCII) 。 就是这样,计算机不知道数字58,因为这些数字只是两个符号,并以1和0的形式保存在内存中。

现在,记忆。 这就是它变得有趣的地方。 所有指令和数据都作为一个大的1和0缓冲区保存在一个地方。 它们被传递到CPU(使用其指令集),该CPU知道第一个1和0(即我们所说的“字”)块的含义。 第一个单词是一条指令,然后是参数。 根据指令,会发生不同的事情。 好的,如果指令的意思是“将这两个数字相加”并将结果存储在这里会怎样?

好吧,现在这是一项硬件工作。 添加二进制数并不那么复杂,在您提供的链接中对此进行了说明。 但是CPU如何知道这是算法以及如何执行它? 好吧,它使用了一堆“全加器”。 什么是“加法器”? 这是一个硬件电路,通过给定两个输入(每个输入为一位,即一个或零),将它们“相加”,并将结果输出到另外两个位(其中一个用于进位)。 但是全加器是如何工作的? 好吧,它是(通过物理方式)由半加法器构造的,而半加法器是由标准and门和xor门构成的。 如果您熟悉类似的运算符(Python中的&^ ),您可能会知道它们是如何工作的。 这些门设计为使用电子元件中使用的元素(其中最重要的是硅)的物理特性来按预期工作。 我认为这是我要停止的地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM