簡體   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