科学计算机二进制算法,计算机是怎么理解二进制的?
計算機是怎么理解二進制的?
計算機的發明最初純粹是為了計算數字, 讓一個機器能夠通過輸入不同的數字, 進行加減乘除等. 首先要約定好機器能處理的數是什么樣的, 即輸入是什么樣的, 才能去制造計算機. 二進制只是一種嘗試, 十進制也有科學家嘗試過, 但由于復雜程度較二進制要高被二進制淘汰了. 比如5個二進制數既是最大到十進制31. 數能表示了, 操作怎么表示呢? 同樣, 因為需要進行的操作總是有限的, 比如用一個3位二進制數表示, 那么就相當于計算機最大可以有8種不同操作.
好了, 帶著這種思路, 我們來組合一下, 一個16位輸入的機器(這里先不討論16位是怎么來的), 最大支持4種操作, 占了兩位二進制. 帶兩個操作數, 那么操作數就是7位一個, 最大的數就是127. 我們暫時把這個16位二進制數叫做指令. 這樣只需要把要指令放在輸入端, 等待計算機計算, 再從輸出端拿出結果就算完成了一次計算. 而這個指令的物理制作方法, 在最初階段可能是一些帶小孔的木板, 或一張紙, 到現在的硬盤! 這個過程就是存儲介質的進化.
計算是能計算了, 可有時候又變的特別麻煩. 假如我們想要加十個數, 依次加起來, 那么按這個方法只能先加前兩個數, 把結果取出來, 再與第三個數相加, 依次類推, 考慮到指令再物理上的制作水平不高, 這樣的結果就是計算一次, 花相對長的時間制作第二個指令, 再加一次, 這樣的機器顯然是不能讓科學家滿意的.
于是大家想能不能讓一個操作的結果保存在計算機里面, 下一條指令就變成讓那個結果與第二個數據相加, 這樣后面的指令就可以不用等前一次的結果出來事先制作好. 后來大家管這個能存儲的位置叫做寄存器. 有了寄存器, 后面的指令不一樣的只是第二個數據. 但是增加的操作讓操作位需要多一些, 16位指令的分配變成了這樣.
這時候計算機的利用效率就高了許多, 但是數據的位數(最高只有5位數據了)卻不讓人滿意.
既然有寄存器, 何不多放幾個寄存器, 數據全部放在寄存器里, 指令里面原來直接表示數據的位來指示第一跟第二個數據都在哪個寄存器里. 一個16位的寄存器假設有11位表示數據, 計算能力都是質的飛越啊! 問題是怎么表示把數據載入到寄存器里呢? 這時候指令的結構就變成了: 操作, 寄存器選擇, 要裝載的數據.
有了這個指令, 裝載數據跟進行具體操作的指令就已經分開了, 而后者又變成了現在這樣.
時間久了, 人們發現者仍然有改進的地方, 于是越來越多種類的操作, 各種各樣的指令被發明出來, 后來有人稱之為指令集架構(Instruction Set Architecture), 指令集一方面代表著設計計算機處理器的方法, 也代表著能在這種指令集上運行的二進制的規則, 這也就是為什么我們常說在x86上運行的程序想要在ARM上運行都需要重新編譯.
等等, 似乎跑題了? 計算機到底是怎么理解一個16位指令哪個部分都代表什么? 操作是怎么進行的? 計算機或者說處理器的結構以及實現是怎么樣的?
未完待續
總結
以上是生活随笔為你收集整理的科学计算机二进制算法,计算机是怎么理解二进制的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用python写html的插件,使用
- 下一篇: 限制 计算机中 某用户上网 win7,W