第一篇學習了計算機組成原理的核心,馮諾依曼結構。由於確實沒學好,就不從頭開始學了。這一篇開始學習計算機的運算方法。首先來學習無符號數和有符號數。基本就是學習基本概念,然後提出問題,解決問題這樣的學習節奏。
什麼是無符號數?
就是沒有符號位的數,機器字長為16位時,表示範圍是0~65535。
什麼是有符號數?
就是把最高位當作符號位的數,機器字長為16位時,表示範圍是==-32768~32767==。
為什麼要發明有符號數?
這是為了在計算機中用統一的格式來表示數值和正負號,而不出現"+","-"這樣的字元。
有符號數會導致什麼問題?
由於有符號數是由符號位和數值位兩部分組成,所以它的計算方法和正常的無符號數肯定是有區別的,馬上要學習的原始碼,補碼,反碼,移碼就是為了解決這個問題而被發明的。
為什麼有符號數負數比正數多1?
機器字長為16位時,表示範圍是 -32768~32767
負數部分比正數部分多了1,直覺上判斷,除去符號位,後面的15位數值為可以表示的範圍是0~32767。再加上符號位,那表示範圍應該是 -32767~32767,這個-32768是**來的呢?
原因就在於1,000,0000,0000,0000和0,000,0000,0000,0000。乙個表示+0,乙個表示-0,有點重複了。另外,1,000,0000,0000,0000還有另一種理解,那就是1,111,1111,1111,1111數值位再加一,也就是-(32767 + 1),也就是-32768,所以其實-32768就是-0,這應該也算是一種約定俗成吧,畢竟邏輯上有一點牽強。
下面引用大師的話來解釋這個問題:
深入理解計算機(第三版)p53:後記不幸的是,補碼表示的不對稱性和c語言的轉換規則之間奇怪的互動,迫使我們用這種不同尋常的方式表示0x80。及-127-1
這就是我學習計算機運算方法的第一篇筆記。後面的問題都是這個符號位引起的,所以這個有符號數算是乙個導火索吧,哈哈。這應該算是人類把負數這一人類花了幾千年發明的數學概念努力解釋給計算機聽吧,計算機當然是不可能聽懂的,不過能算出正確答案就夠了,哈。
計算機組成原理學習筆記
一直以來對計算機的組成及工作原理都沒有乙個整體的認識,剛好學習到這裡了,通過系統學習,對計算機組成及工作原理有了乙個系統的 認識,這裡做個總結,交流一下。初中我們就知道計算機處理器由運算器 控制器 儲存器組成,後來我們有學習了很多的暫存器 儲存器和匯流排等知識,知識雖然多了,但是並沒有將他們合理的組...
《計算機組成原理》 學習筆記(二)
迄今為止,所有計算機都以二進位制形式進行算術運算和邏輯操作,因此,對於使用者在鍵盤上輸入的十進位制數字和符號命令,計算機必須先把它們轉換成二進位制形式進行識別 運算和處理,然後再把運算結果還原成十進位制數字和符號,並在顯示器上顯示出來 2.1.1 計算機中的數制 十進位制 decimal 二進位制 ...
計算機組成原理學習 筆記三
主存簡單模型 位址暫存器 mar 儲存體 資料暫存器 mdr 由控制電路控制整個儲存器,擁有片選線,讀控制線,寫控制線 利用解碼器簡化位址線利用n位位址控制2 n個儲存單元 總容量 儲存單元個數 儲存字長 以上的部件組合起來就是儲存器晶元 定址 按位元組 字 半字 雙字定址,提供編號,根據這個編號來...