計算機底層基石:原碼、反碼、補碼、移碼深度剖析

在計算機的世界里,所有數據最終都以二進制的形式進行存儲與運算。原碼、反碼、補碼和移碼作為二進制數據的重要編碼方式,對計算機實現高效數據處理起著關鍵作用。接下來,我們將深入剖析這幾種編碼。?

一、原碼?

1.1 定義?

原碼是最簡單的機器數表示法,能夠直觀反映數值的大小與正負。對于正數,原碼等同于其本身的二進制表示;對于負數,原碼是在其絕對值的二進制表示前加上符號位,“0” 表示正數,“1” 表示負數 。?

以 8 位二進制為例:?

+5 的原碼寫作:00000101。最高位 “0” 表明這是一個正數,后續 7 位 “0000101” 是 5 的二進制表示。?

-5 的原碼寫作:10000101。最高位 “1” 表明這是一個負數,后續 7 位依然是 5 的二進制表示。?

1.2 特點?

原碼最大的優勢在于直觀,易于理解,與真值的轉換簡單。然而,它在實際運算中存在諸多不便。在進行加減法運算時,符號位需要單獨處理,這使得運算規則變得復雜。此外,數字 0 在原碼中有兩種表示形式:+0 的原碼為 00000000,-0 的原碼為 10000000。這種不唯一性會增加計算機存儲與處理數據的難度。?

1.3 運算示例?

在原碼運算中,以加法為例,如果兩個數符號相同,可以直接將它們的絕對值相加,結果的符號保持不變;如果符號不同,需要比較兩個數絕對值的大小,用較大的絕對值減去較小的絕對值,結果的符號取絕對值較大的數的符號。?

如計算 5 + 3:?

5 的原碼:00000101?

3 的原碼:00000011?

將對應位相加,得到:00001000,即 8 的原碼。?

而計算 5 + (-3) 時:?

5 的原碼:00000101?

-3 的原碼:10000011?

由于符號位不同,需要進行減法操作,且要比較絕對值大小,運算過程較為繁瑣。?

二、反碼?

2.1 定義?

反碼的表示規則為:正數的反碼與原碼相同;負數的反碼是在原碼的基礎上,除符號位外,其余各位按位取反。?

以 8 位二進制為例:?

+5 的反碼:00000101,與原碼一致。?

-5 的原碼:10000101,其反碼為 11111010,即除符號位 “1” 外,其余各位 “0000101” 按位取反。?

2.2 特點?

反碼主要作為原碼到補碼轉換過程中的中間過渡。與原碼類似,反碼也存在 0 表示不唯一的問題。+0 的反碼是 00000000,-0 的反碼是 11111111,這限制了反碼在計算機中的直接應用。?

2.3 運算示例?

在反碼運算中,加法規則相對復雜。若兩個數相加產生進位,需要將進位加到結果的最低位。?

如計算 (-1) + (-2):?

-1 的原碼:10000001,反碼:11111110?

-2 的原碼:10000010,反碼:11111101?

將兩個反碼相加:11111110 + 11111101 = 111111011,產生了進位。將進位加到結果的最低位,得到 11111110,其對應的原碼為 10000001,即 - 3。?

三、補碼?

3.1 定義?

正數的補碼與原碼相同,負數的補碼是在其反碼的末位加 1。?

以 8 位二進制為例:?

+5 的補碼:00000101,與原碼一致。?

-5 的原碼:10000101,反碼:11111010,補碼則為 11111010 + 1 = 11111011。?

3.2 特點?

補碼的出現,成功解決了原碼和反碼中存在的問題。在計算機中,采用補碼進行運算,能夠將減法運算轉化為加法運算,極大地簡化了計算機的運算電路。在補碼表示中,0 的表示是唯一的,均為 00000000。此外,補碼可以多表示一個最小負數。以 8 位二進制補碼為例,其表示范圍是 - 128 到 + 127。?

3.3 運算示例?

使用補碼進行運算時,無需考慮符號位,直接進行加法運算即可。?

如計算 5 - 3,可轉化為 5 + (-3):?

5 的補碼:00000101?

-3 的原碼:10000011,補碼:11111101?

將兩個補碼相加:00000101 + 11111101 = 00000010,即 2 的補碼,與正確結果相符。?

四、移碼?

4.1 定義?

移碼通常用于表示浮點數的階碼,它是在補碼的基礎上,將符號位取反得到的。在 8 位二進制系統中,常設定偏移量為 128。?

以 8 位二進制為例:?

+5 的補碼:00000101,移碼:10000101?

-5 的補碼:11111011,移碼:01111011?

4.2 特點?

移碼最大的優勢在于方便比較兩個數的大小。由于移碼是在補碼的基礎上對符號位取反,使得移碼表示的數在數軸上是連續的,其大小順序與真值的大小順序一致。這一特性在進行浮點數的階碼比較時非常有用,有助于計算機高效地進行浮點數運算和處理。?

4.3 運算示例?

在浮點數運算中,通過比較兩個數的移碼大小,可以快速確定它們的相對大小。例如,在進行兩個浮點數的乘法或除法運算時,首先需要比較它們的階碼大小,移碼表示使得這一比較過程變得簡單直接。?

五、應用場景?

5.1 原碼應用?

原碼在一些對運算精度和速度要求不高,且更注重數據直觀表示的場景中仍有應用。在一些簡單的計算機控制系統或數字電路設計中,原碼可以用于快速驗證算法或邏輯的正確性。?

5.2 反碼應用?

雖然反碼本身在實際應用中并不廣泛,但在一些早期的計算機系統中,反碼作為原碼到補碼轉換的中間步驟,起到了重要的過渡作用。?

5.3 補碼應用?

補碼是計算機中最常用的編碼方式,廣泛應用于 CPU 運算、內存存儲等方面。幾乎所有現代計算機的整數運算都采用補碼形式,以提高運算效率和準確性。?

5.4 移碼應用?

移碼主要應用于浮點數的表示和運算中。在科學計算、圖形處理等對浮點數運算要求較高的領域,移碼能夠有效地提高計算速度和精度。?

六、總結?

原碼、反碼、補碼和移碼作為計算機中重要的編碼方式,各自具有獨特的特點和應用場景。原碼直觀易懂,但運算不便;反碼作為過渡編碼,解決了部分問題;補碼通過巧妙的設計,實現了減法到加法的轉換,成為計算機運算的基礎;移碼則在浮點數運算中發揮了重要作用。深入理解這些編碼方式,有助于我們更好地掌握計算機的工作原理,為開發更高效、更強大的計算機系統奠定基礎。?

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

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

相關文章

Bitnode和Bitree有什么區別 為什么Bitree前多了*

Bitnode 和 Bitree 的區別在于它們的類型定義和用途: Bitnode: 這是一個結構體類型,表示二叉樹中的一個節點。 它包含三個成員: data:存儲節點的數據(這里是 char 類型)。 lchild:指向左子節點…

AI 時代,我們該如何寫作?

當ChatGPT/DeepSeek能在幾秒鐘內產出一篇文章,而且生成能力日益精進,你是否也曾思考,我還能做什么? 當2024年AI開始進入人們的視野,我在CSDN 上的博客也悄然發生了變化,以前一篇文章發布后,閱讀…

第三卷:覆舟山決戰(73-108回)正反人物群像

第三卷:覆舟山決戰(73-108回)正反人物群像 核心矛盾:寒門稱帝→權力異化→歷史循環 主題:通過人物群像展現屠龍者成魔的必然性與制度壓迫的永恒性 一、正派陣營(理想主義殘余) 1. 檀道濟&…

vscode 通過Remote-ssh遠程連接服務器報錯 could not establish connection to ubuntu

vscode 通過Remote-ssh插件遠程連接服務器報錯 could not establish connection to ubuntu,并且出現下面的錯誤打印: [21:00:57.307] Log Level: 2 [21:00:57.350] SSH Resolver called for "ssh-remoteubuntu", attempt 1 [21:00:57.359] r…

Nginx RTMP DASH 模塊分析 (ngx_rtmp_dash_module.c)

ngx_rtmp_dash_module.c實現了一個 Nginx RTMP 模塊,主要功能是支持通過 DASH(動態自適應流媒體)協議進行流媒體發布。DASH(Dynamic Adaptive Streaming over HTTP)是一種流行的視頻流協議,它允許根據網絡狀…

飛書電子表格自建應用

背景 coze官方的插件不支持更多的飛書電子表格操作,因為需要自建應用 飛書創建文件夾 創建應用 開發者后臺 - 飛書開放平臺 添加機器人 添加權限 創建群 添加剛剛創建的機器人到群里 文件夾邀請群 創建好后,就可以拿到id和key 參考教程: 創…

LangFlow系列:LangFlow快速入門示例

本文介紹了開源AI開發工具LangFlow的快速入門方法。LangFlow作為可視化框架,支持通過拖拽組件構建多智能體及RAG應用,兼容主流大語言模型與向量數據庫。文章從環境搭建、核心功能到實戰案例逐步講解,演示如何利用其可視化界面創建智能聊天機器…

基于龍芯3A5000處理器,全國產標準6U VPX板卡解決方案

1,產品功能 本產品為一款高可靠性的基于龍芯3A5000處理器以及 7A2000芯片組的標準6U VPX板卡,具有以太網、SATA、PCIE,以及顯示等接口,產品功能框圖如圖1所示: 圖1 系統框圖 2,技術指標 序號 項目 指標…

無人機進行航空數據收集對于分析道路狀況非常有用-使用無人機勘測高速公路而不阻礙交通-

無人機進行航空數據收集對于分析道路狀況非常有用-使用無人機勘測高速公路而不阻礙交通- 瑞士擁有1,400 多公里長的高速公路網絡。這些公路將人和貨物從山谷高原運送到阿爾卑斯山的最高山口。維護這些高速公路使國家得以順利運轉。高速公路維護的重要性顯而易見,但在…

Android設計模式之工廠方法模式

一、定義: 定義一個用于創建對象的接口,讓子類決定實例化哪個類。 二、組成: 1.抽象工廠:工廠模式的核心,聲明工廠方法,返回抽象產品對象。 2.具體工廠:實現工廠方法,返還具體的產品…

推薦系統(十七):在TensorFlow中用戶特征和商品特征是如何Embedding的?

在前面幾篇關于推薦模型的文章中,筆者均給出了示例代碼,有讀者反饋——想知道在 TensorFlow 中用戶特征和商品特征是如何 Embedding 的?因此,筆者特意寫作此文加以解答。 1. 何為 Embedding ? 關于 Embedding&#x…

c++第三課(基礎c)

1.前文 2.break 3.continue 4.return 0 1.前文 上次寫文章到現在&#xff0c;有足足這么多天&#xff08;我也不知道&#xff0c;自己去數吧&#xff09; 開始吧 2.break break是結束循環的意思 舉個栗子 #include<bits/stdc.h> using namespace std; int main(…

關于ArcGIS中加載影像數據,符號系統中渲染參數的解析

今天遇到一個很有意思的問題&#xff0c;故記錄下來&#xff0c;以作參考和后續的研究。歡迎隨時溝通交流。如果表達錯誤或誤導&#xff0c;請各位指正。 正文 當我們拿到一幅成果影像數據的時候&#xff0c;在不同的GIS軟件中會有不同效果呈現&#xff0c;但這其實是影像是…

北森測評的經驗

測評經驗記錄 首先聲明&#xff0c;北森測評就是垃圾&#xff0c;把行測拿過來就能評測能力了&#xff1f;直接去參加公務員考試更好。網上2024年的題庫 評測分為 閱讀理解數學計算圖形題性格測試 圖形題 總結的經驗如下 圖形推理題 一組圖形&#xff0c;推測另一組圖形最…

Java/Scala是什么

Java 和 Scala 是兩種運行在 ?JVM&#xff08;Java 虛擬機&#xff09;? 上的編程語言&#xff0c;雖然共享相同的運行時環境&#xff0c;但它們在設計哲學、語法特性和適用場景上有顯著差異。以下是兩者的詳細解析&#xff1a; ?1. Java ?核心特性 ?面向對象&#xff1…

SQL Server 備份相關信息查看

目錄標題 一、統計每個數據庫在不同備份目錄和備份類型下的備份次數&#xff0c;以及最后一次備份的時間整體功能詳細解釋 二、查詢所有完整數據庫備份的信息&#xff0c;包括備份集 ID、數據庫名稱、備份開始時間和備份文件的物理設備名稱&#xff0c;并按備份開始時間降序排列…

CANoe入門——CANoe的診斷模塊,調用CAPL進行uds診斷

目錄 一、診斷窗口介紹 二、診斷數據庫文件管理 三、添加基礎診斷描述文件&#xff08;若沒有CDD/ODX/PDX文件&#xff09;并使用對應的診斷功能進行UDS診斷 3.1、添加基礎診斷描述文件 3.2、基于基礎診斷&#xff0c;使用診斷控制臺進行UDS診斷 3.2.1、生成基礎診斷 3.…

【數據結構】二叉樹的遞歸

數據結構系列三&#xff1a;二叉樹(二) 一、遞歸的原理 1.全訪問 2.主角 3.返回值 4.執等 二、遞歸的化關系思路 三、遞歸的方法設計 一、遞歸的原理 1.全訪問 方法里調用方法自己&#xff0c;就會形成調用方法本身的一層一層全新相同的調用&#xff0c;方法的形參設置…

Imgui處理glfw的鼠標鍵盤的方法

在Imgui初始化時&#xff0c;會重新接手glfw的鍵盤鼠標事件。也就是遇到glfw的鍵盤鼠標事件時&#xff0c;imgui先會運行自己的處理過程&#xff0c;然后再去處理用戶自己注冊的glfw的鍵盤鼠標事件。 看imgui_impl_glfw.cpp源碼的安裝回調函數部分代碼 void ImGui_ImplGlfw_In…

【LVS】負載均衡群集部署(DR模式)

部署前IP分配 DR服務器&#xff1a;192.168.166.101 vip&#xff1a;192.168.166.100 Web服務器1&#xff1a;192.168.166.104 vip&#xff1a;192.168.166.100 Web服務器2&#xff1a;192.168.166.107 vip&#xff1a;192.168.166.100 NFS服務器&#xff1a;192.168.166.108 …