目錄
1.機器數
2.真值
3.原碼
4.反碼
首頁 常見問題 機器數是原碼還是補碼

機器數是原碼還是補碼

Nov 18, 2022 pm 02:22 PM
機器數

機器數既是原碼,也是補碼。在計算機中表示的帶符號的二進制數稱為機器數,機器數包含原碼、反碼和補碼三種表示形式。原碼就是加了一位符號位的二進制數,正數符號位為0,負數符號位為1,符號位為最高位;正數的反碼就是其原碼,負數的反碼則是符號位不變,其他位元取反;正數的補碼就是其原碼,負數的補碼則是反碼1。

機器數是原碼還是補碼

本教學操作環境:windows7系統、Dell G3電腦。

1.機器數


透過了解機器數後發現:機器數包含了“源碼”,“反碼”,“補碼”的表示形式;

因為機器數指的是一個數在計算機裡以二進位表示的形式,機器數的首位是符號位,正數的符號位為“0”,負數的符號位為“1”。

例如:5 的機器數是:00000101

          -5的機器數為:10000101 (以8位元二進位為例)

# 而「源碼」,「反向碼」,「反位元」碼”,“補碼”具有相同的表示形式,接下來會具體介紹它們的關係。

2.真值


真值指的是帶有符號位元的機器數對應的真實數值。

對於真值而言,一般用十進位表示,也可以用二進位表示,很少用其他進位表示真值。

例如:10000101 的真值= -0000101 = -5

           00000101 的真值= 0000101 = 5

3.原碼

原碼就是加了一位符號位的二進制數,正數符號位為0,負數符號位為1,符號位為最高位。個人理解就是將真值裡面的" "轉換為0,"-"轉換為1。

原碼的表示形式就是第一位是符號位元加上真值的絕對值。

例如:-000101(真值)= 10000101(原碼)

          00000101(真值)= 00000101(原碼)

因為第一位是符號位,所以原碼在8位二進位的範圍為:

11111111~0111111  即    -127~127

原碼是最容易被大腦理解,計算的表示形式。

4.反碼

正數的補碼反碼是其本身;正數的反碼就是其原碼,負數的反碼則是符號位元不變,其他位元取反(0變1,1變0)負數的反碼是符號位元不變,其餘位元取反。

反碼就是在原碼的基礎上,如果是正數,就和原碼一樣,如果是負數,首位符號不變,其餘數值取反。

例如:00000101(原碼)=  00000101(反碼)

          10000101(原碼)=

          10000101(原碼)=#  11111010 (反碼)

##111111010 (反碼)

##11通常被轉換成原碼後計算。

5.補碼

補碼是在原碼的基礎上,如果是正數,就和原碼一樣,如果是負數,除首位符號外,其餘數值取反(反碼),在它的基礎上1。

例如:00000101(原碼)=  00000101(反碼)=  00000101(補碼)

#對於負數, 補碼表示方式也是人腦無法直觀看出其數值的,通常也需要轉換成原碼再計算其數值。

6.使用原碼, 反碼和補碼的歷程



#只使用原碼容易被理解,但是對於計算機而言要辨別首位正負,要消耗大量資源,於是人們尋找到了利用符號位元參與運算的方法。

我們知道, 根據運演算法則減去一個正數等於加上一個負數, 即: 1-1 = 1 (-1) = 0 , 所以機器可以只有加法而沒有減法, 這樣計算機運算的設計就更簡單了。

探索計畫1.0(原碼):

1 (-1) = 0

00000001(原碼) 10000001(原碼)=10000010(原碼)= -2

探索原碼運算首位計畫失敗

追加投資!

探索計畫2.0版本出世(反碼):

00000001(原碼) 10000001(原碼)= 00000001(反碼) 11111110(反碼)= 11110001(反碼)11111110(反碼)= 111111111(反碼) 10000000(原碼)= -0

更新說明:解決了首位符號參與運算的問題,很大程度上減少計算機對二進制運算所消耗的資源,但是出現“0”和“-0”重複的情況,還可以改進!

探索計畫3.0版本出世(補碼):

00000001(原碼) 10000001(原碼)= 00000001(反碼) 11111110(反碼)= 00000001(補碼) (補碼)=00000000(補碼)=00000000(原碼)= 0

追加:(-1)(-127)= (-128)

10000001(原碼) 11111111(原碼)= 11111110(反碼) 10000000(反碼)= 11111111(補碼) 10000001(補碼)=10000000(補碼)=-10000001(補碼)=10000000(補碼)=-10000001(補碼)=10000000(的一個無意義的二進制“-0”,對二進制範圍進一步擴大由1.0版本的(-127~127)升級為(-128~127)同理也可以用於其他位的二進制

例如:int有4個位元組32位,表示的範圍為(-2^31~2^31-1)

由於3.0版本更符合環保理念,所以作為計算機儲存二進制的不二之選。

更多相關知識,請造訪

常見問題欄位!

以上是機器數是原碼還是補碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)