計算機系統基礎(二)

1.數值數據的表示

為什么采用二進制?

  • 二進制只有兩種基本狀態,兩個物理器件就可以表示0和1
  • 二進制的編碼、技術、運算規則都很簡單
  • 0和1與邏輯命題的真假對應,方便通過邏輯門電路實現算術運算

數值數據表示的三要素

  • 進位記數制(十進制、二進制、十六進制)
  • 定浮點表示(解決小數點問題,定點小數:小數點固定居于最高位。定點數的原碼、補碼等還解決了正負號的問題)
  • 如何用二進制編碼

原碼與補碼

首先我們先看原碼

顯而易見,負數的表示就是最高位取1,但是這樣存在以下問題

  • 0 的表示不唯一
  • 加、減運算方式不統一
  • 需額外對符號位進行處理
  • 特別當 a<b時,實現 a-b比較困難

所以我們又引入補碼的概念(機器數就是補碼)

補碼=模+該數本身(mod模),該數最高位必須是0

我們就可以得到:123的補碼=0111 1011;-123的補碼=1000 0101,再多舉幾個例子,我們發現:

  • 正數的補碼就是其本身
  • 負數的補碼等于對應正數補碼的“各位取反、末位加1
  • 正數補碼最高位是0,負數補碼最高位是1

以及一些結論:

對于某一確定的模,某數減去小于模的另一數,總可以用該數加上另一數負數的補碼來代替;

讓我們來舉一個例子:

最后結果1 0011 1111,再將其mod2^8(運算器只有有限位,假設為n位,則運算結果只能保留低n位,因此,其模為2^n),得到最終結果0011 1111

接下來是特殊數的補碼

整數

整數分為無符號整數和有符號整數,例如8位無符號整數最大值1111 1111為255,有符號整數最大值0111 11111為127

c語言規定:若運算中同時有無符號和帶符號整數,則按無符號整數運算

浮點數

規格化數

小數點前只有一位非零數

在計算機中,浮點數按如下格式存儲

s位是符號位,正數是0負數是1

注意:規格化尾數的小數點總是1,不寫進尾數M中

現在讓我們舉個例子,計算-12.75

首先12.75=1100.11;轉化為科學計數法1.10011*2^3;階數=3+127=130=1000 0010

尾數=100 1100 0000 0000 0000 0000;符號位為1

現在我們再來做一個題,反推

首先是負數;0111 1101是125,125-127=-2,指數為-2;根據尾數得1.11*2^-2;1.11又是1+0.5+0.25=1.75;所以最終的結果是1.75/4=0.4375

非規格化數

浮點數范圍比定點數大,但數的個數沒變多,故數之間更稀疏,且不均勻

說明浮點數不是能表示范圍內的任意數!

當輸入數據是一個不可表示數時,機器將其轉換為最鄰近的可表示數

在浮點數中所能表示的最小正數1*2^-126,尾數不能全為0

為什么是-126?這樣可以使得出現比規格化數還小的數時程序也能繼續下去

此時階數-126,而尾數的隱藏數變為0

無窮數

在浮點數中階數全為1并且尾數全為0則為無窮,如果尾數非零則是NaN

接下來,我們再來看計算機對于除數是0是怎么處理的:

計算機中除數為0的結果是 +/- ∞, 不是溢出異常.

這樣可以將X/0>Y可作為有效比較

然而Sqrt (- 4.0) 以及0/0為NaN

階數、尾數全為0,-0,+0表示不同

2.數據的存儲

數據的基本寬度

存儲器按字節編址,字節是最小可尋址單位 ,一般采用MSB(最高有效字節)

字與字長

字長:指數據通路的寬度

字:度量數據類型的寬度,16位(x86)

容量換算單位是1024,速度則是1000

大端:高地址存低字節

小端:高地址存高字節

譬如0x12345在小端機存儲的方式

3.數據的運算

按位運算,邏輯運算與移位運算

按位運算

按位與:& 有零則零,兩個都是1才是1,1與任何數字與都是那個數本身

按位或:|,有1就是1,兩個都是0才是0

按位取反:~,1變0,0變1

按位異或:^,相同則為1,不同則為0

邏輯運算

&&,||,!,不做過多解釋

移位運算

左移:<<,擴大兩倍(可能會發生溢出)

右移:>>,縮小二分之一(可能有效數據丟失)

C語言中不區分是邏輯還是算術移位,編譯器根據x的類型確定

擴展:短轉長 ? ? ? ?無符號數:0擴展,前面補0;帶符號整數:符號擴展,前面補符

截斷:長轉短 ? ? ? 強行將高位丟棄,故可能發生“溢出”(沒有規定編譯器必須報錯)

算術運算

  • ALUop:用來決定ALU所執行的處理功能。ALUop的位數k決定了操作的種類
  • OF:溢出標志,若A.B同號,但與Sum不同號,則1
  • SF:符號標志
  • ZF:零標志,sum為0,則為1
  • CF:進位/錯位標志。當加法時,CF=1,表示加法有進位;減法時,CF=1,表示減法不夠減
  • Sub:為1時做減法,為0時做加法
  • MUX:二路選擇器

ZF,SF,CF,OF被稱為條件標志,在運算電路中產生,被記錄到專門的的寄存器中

重要認識

  • 計算機中所有算術運算都基于加法器實現!
  • 加法器不知道所運算的是帶符號數還是無符號數。
  • 加法器不判定對錯,總是取低n位作為結果,并生成標志信息

整數加法

無符號加溢出條件:CF=1

帶符號加溢出條件:OF=1

整數減法

Unsigned: CF=0時,大于

Signed:OF=SF時,大于

整數乘法

高級語言中兩個n位整數相乘得到的結果通常也是一個n位整數

無符號:若Puh=0,則不溢出

帶符號:若Psh每位都等于Ps的最高位,則不溢出

編譯器在處理變量與常數相乘時,往往以移位、加法和減法的組合運算來代替乘法運算

例如:對于表達式x*20,編譯器可以利用20=16+4=24+22,將x*20轉換為(x<<4)+(x<<2)

①無乘法指令>② 用ALU實現乘法指令>③用乘法器實現乘法指令

整數除法

對于帶符號整數來說,n位整數除以n位整數,除-2^(n-1)/-1= 2^(n-1)會發生溢出外,其余情況(除數為0外)都不會發生溢出

正數商取比自身小的最接近整數,負數商取比自身大的最接近整數

編譯器在處理一個變量與一個2的冪次形式的整數相除時,常采用右移運算來實現

注意:帶符號負整數(天板):加偏移量(2^k-1),然后再右移k 位 ,低位截斷

浮點數加減

首先要對階,小階向大階對齊,還要考慮舍入

若運算結果尾數是0,則需要將階碼也置0

附加位

IEEE754規定: 中間結果須在右邊加2個附加位

Guard (保護位):在significand右邊的位 ?

Round (舍入位):在保護位右邊的位;若沒有舍入位,采用就近舍入到偶數

舍入方式:

01:舍;11:入 ;10:(強迫結果為偶數)

因此

  • int->float,不會發生溢出,但可能有數據被舍入
  • int,float->double,能保留精確值
  • double->float,int,可能發生溢出,此外,由于有效位數變少,故可能被舍入
  • float,double->int,因為int沒有小數部分,所以數據可能會向0方向被截斷

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38103.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

以太網常用協議——ARP協議

文章目錄 一、 ARP協議與MAC層1.TCP/IP協議2. MAC地址3. ARP映射4. ARP請求和ARP應答 二、以太網幀格式三、ARP協議1. 以太網ARP通信測試&#xff1a; 以太網使用的協議很多&#xff0c;常用的有ARP、UDP等。 再介紹具體協議之前需要先知道一些基本的概念&#xff1a; 一、 AR…

COB顯示屏與GOB顯示屏封裝方式有哪些不同?

很多用戶因為使用場景的特殊性&#xff0c;所以會選擇防護能力更強的COB顯示屏或者是GOB顯示屏&#xff0c;兩種產品從名稱上看只是有一個字母的懸殊&#xff0c;其實使用的工藝截然不同&#xff0c;GOB顯示屏通常是在SMD顯示屏的基礎上進行升級&#xff0c;而COB顯示屏則是完全…

獨立開發者系列(15)——git的使用

上一篇14文章觸發了敏感話題&#xff0c;直接未過審核&#xff0c;看來技術博客也有敏感點。 大部分情況下&#xff0c;獨立項目是你一個人開發&#xff0c;但是當你接的項目比較大的時候&#xff0c;你需要其他人的幫忙&#xff0c;這個時候你要把代碼分享給別人。因為如果你…

【分布式數據倉庫Hive】Hive的安裝配置及測試

目錄 一、數據庫MySQL安裝 1. 檢查操作系統是否有MySQL安裝殘留 2. 刪除殘留的MySQL安裝&#xff08;使用yum&#xff09; 3. 安裝MySQL依賴包、客戶端和服務器 4. MySQL登錄賬戶root設置密碼&#xff0c;密碼值自定義&#xff0c;這里是‘abc1234’ 5. 啟動MySQL服務 6…

maven設置阿里云鏡像源(加速)

一、settings.xml介紹 settings.xml是maven的全局配置文件&#xff0c;maven的配置文件存在三個地方 項目中的pom.xml&#xff0c;這個是pom.xml所在項目的局部配置文件用戶配置&#xff1a;${user.home}/.m2/settings.xml全局配置&#xff1a;${M2_HOME}/conf/settings.xml 優…

YOLOV10訓練集制作+Train+Val記錄

代碼地址&#xff1a;THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection (github.com) 一、數據制作 在這篇文章有講過如何制作數據集及代碼實現 YOLOV9訓練集制作TrainVal記錄_yolov9 train yaml-CSDN博客 二、配置文件 &#xff08;1&#xff09;代碼結構…

“私域流量:解鎖電商新機遇,共創數字化未來“

一、私域流量的戰略意義再探 步入數字化浪潮的深處&#xff0c;流量已成為企業成長不可或缺的血液。與廣泛但難以掌控的公域流量相比&#xff0c;私域流量以其獨特的專屬性和復用潛力&#xff0c;為企業鋪設了通往深度用戶關系的橋梁。它不僅賦能企業實現精準營銷&#xff0c;…

國產跨平臺高性能遠程控制軟件 RayLink,暢享高清流暢遠程辦公

不管是手機還是電腦&#xff0c;出色的硬件是好用的基礎。而其中的軟件工具&#xff0c;也是提高效率、減輕負擔的好東西。 免費的軟件工具眾多&#xff0c;當然付費工具也不少。大家可能會覺得正版軟件很貴&#xff0c;但國內軟件代理商的價格其實很實惠。 本次為大家介紹一…

CF1375D Replace by MEX 題解

題目大意 令 m e x mex mex 為序列中最小的沒有出現的數。 給你一個長度為 n n n 的序列 a a a&#xff0c;你可以進行不超過 2 n 2\times n 2n 次操作&#xff0c;使得序列 a a a 單調不降。每次操作你可以選定一個位置 p p p&#xff0c;并將 a p a_p ap? 賦值為 …

一文看盡AI繪畫工具 Stable Diffusion發展史,AI繪畫究竟發展到什么地步了?!

01、引言 Stable Diffusion 在短短兩年內發布了多個版本。最著名的版本是 1.5 和 SDXL。不過&#xff0c;還有許多其他版本值得一提。讓我們一起來探索穩定擴散模型的起源和發展。 閑話少說&#xff0c;我們直接開始吧&#xff01; 02、缺失的SD V1.0版本 Stable Diffusion…

材質相關內容整理 -ThreeJs

在Three.js中&#xff0c;材質是用來定義3D對象外觀的關鍵部分。Three.js支持多種材質文件和類型&#xff0c;每種材質都有其特定的用途和優勢。下面簡單整理了一下目前Three.js支持的材質文件和類型。 一、Three.js支持的材質文件類型 JPEG (.jpg) 和 PNG (.png) 用途&#x…

iphone新機官網驗機流程

若您想購買新款iPhone并在官方網站上驗證機器的真實性&#xff0c;可以按照以下流程進行&#xff1a; 打開蘋果官方網站&#xff08;https://www.apple.com&#xff09;。在導航欄中選擇“iPhone”選項&#xff0c;進入iPhone的產品頁面。在頁面中找到您想要購買的新款iPhone&…

C語言快速學習筆記

學習網站&#xff1a;C 語言教程 | 菜鳥教程 (runoob.com)C 語言教程 | 菜鳥教程 (runoob.com)C 語言教程 | 菜鳥教程 (runoob.com) 這個網站知識完整&#xff0c;講解清晰。 在線C語言編程工具&#xff1a;菜鳥教程在線編輯器 (runoob.com) 國外學習網站&#xff1a;C語言介…

【機器學習】機器學習的重要方法——線性回歸算法深度探索與未來展望

歡迎來到 破曉的歷程博客 引言 在數據科學日益重要的今天&#xff0c;線性回歸算法以其簡單、直觀和強大的預測能力&#xff0c;成為了眾多領域中的基礎工具。本文將詳細介紹線性回歸的基本概念、核心算法&#xff0c;并通過五個具體的使用示例來展示其應用&#xff0c;同時探…

使用conda創建虛擬環境,并將虛擬環境加載到jupyter notebook中【已解決】

使用conda創建虛擬環境&#xff0c;并將虛擬環境加載到jupyter notebook中【已解決】

免費分享:2000-2021年全國分省250mNDVI數據集(附下載方法)

NDVI (Normalized Difference Vegetation Index)歸一化植被指數&#xff0c;又稱標準化植被指數。是目前應用最廣泛的植被指數&#xff0c;與植被的分布呈線性相關&#xff0c;是植被生長狀態和空間分布的最佳指示因子&#xff0c;也是遙感估算植被覆蓋度(FVC&#xff0c;Fract…

深入學習 Kafka(2)- Partition 和 Topic

1. Partition的作用 Topic是邏輯的概念&#xff0c;Partition是物理的概念&#xff1a; Partition 對一個 Topic 的消息進行物理上的分離&#xff0c;讓消息可以分布在不同的實體機器上&#xff0c;可以提升系統吞吐量和并行處理能力。每個Partition可以有多個副本&#xff08…

交換機06_vlantrunk

一、虛擬局域網vlan 目的&#xff1a;劃分廣播域 思科設備如何去配置vlan 創建vlan設置對應的接口模式將接口加入vlan全局模式配置vlan vlan 2 設置接口模式&#xff08;目前需要將接口加入對應vlan&#xff0c;一般用于連接PC&#xff09; en conf t int f0/0 switchport m…

SAP S/4 FICO批量創建銀行主數據(銀行主數據/賬戶主數據)開發說明書(包括測試樣例、程序代碼僅作參考,不保證一定可以運行)

開發通用說明 新增程序——批導工具處理邏輯如下:自定義批導程序():點擊“執行”按鈕若數據錯誤或重復,先檢查導入的銀行賬號是否已在系統中存在,若已存在則狀態顯示為紅燈,并在消息反饋列提示“該銀行已經存在”。查重后若銀行賬戶為新增賬戶,但導入模板提供的數據有缺…

Spring Boot中獲取請求參數的幾種方式詳解

Spring Boot中獲取請求參數的幾種方式詳解 在Web開發中&#xff0c;處理HTTP請求是一項基本且核心的任務。Spring Boot作為目前最流行的Java Web開發框架之一&#xff0c;提供了多種簡便的方式來獲取和處理請求參數。本文將深入探討在Spring Boot中獲取請求參數的幾種方式&…