導航:首頁 > 源碼編譯 > 無符號數是源碼嗎

無符號數是源碼嗎

發布時間:2023-08-09 01:21:55

❶ 無符號數沒有什麼原碼,反碼,補碼的概念

如果101011是原碼的話,從左到右第一位是符號位,指正負,0為正,1為負
(1)01011指數字
那麼這個數字就是-01011(二進制)
變成反碼就是符號位為1,其他位按位取反,為110100
補碼就是反碼+1,為110101
無符號數就是它本身
移碼就是在補碼的基礎上符號位取反,為010101

❷ 原碼反碼補碼的意義

問題一:原碼、補碼和反碼的概念??? 數在計算機中是以二進制形式表示的。
數分為有符號數和無符號數。
原碼、反碼、補碼都是有符號定點數的表示方法。
一個有符號定點數的最高位為符號位,0是正,1是副。
以下都以8位整數為例,
原碼就是這個數本身的二進制形式。
例如
0000001 就是+1
1000001 就是-1
正數的反碼和補碼都是和原碼相同。
負數的反碼是將其原碼除符號位之外的各位求反
[-3]反=[10000011]反=11111100
負數的補碼是將其原碼除符號位之外的各位求反之後在末位再加1。
[-3]補=[10000011]補=11111101
一個數和它的補碼是可逆的。
為什麼要設立補碼呢?
第一是為了能讓計算機執行減法:
[a-b]補=a補+(-b)補
第二個原因是為了統一正0和負0
正零:00000000
負零:10000000
這兩個數其實都是0,但他們的原碼卻有不同的表示。
但是他們的補碼是一樣的,都是00000000
特別注意,如果+1之後有進位的,要一直往前進位,包括符號位!(這和反碼是不同的!)
[10000000]補
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符號位變成了0)
有人會問
10000000這個補碼表示的哪個數的補碼呢?
其實這是一個規定,這個數表示的是-128
所以n位補碼能表示的范圍是
-2^(n-1)到2^(n-1)-1
比n位原碼能表示的數多一個
又例:
1011
原碼:01011
反碼:01011 正數時,反碼=原碼
補碼:01011 正數時,補碼=原碼
-1011
原碼:11011
反碼:10100 負數時,反碼為原碼取反
補碼:10101 負數時,補碼為原碼取反+1
0.1101
原碼:0.1101
反碼:0.1101 正數時,反碼=原碼
補碼:0.1101 正數時,補碼=原碼
-0.1101
原碼:1.1101
反碼:1.0010 負數時,反碼為原碼取反
補碼:1.0011 負數時,補碼為原碼取反+1
總結:
在計算機內,定點數有3種表示法:原碼、反碼和補碼
所謂原碼就是前面所介紹的二進制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。
反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
補碼表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
1、原碼、反碼和補碼的表示方法
(1) 原碼:在數值前直接加一符號位的表示法。
例如: 符號位 數值位
[+7]原= 0 0000111 B
[-7]原= 1 0000111 B
注意:a. 數0的原碼有兩種形式:
[+0]原=00000000B [-0]原=10000000B
b. 8位二進制原碼的表示範圍:-127~+127
2)反碼:
正數:正數的反碼與原碼相同。
負數:負數的反碼,符號位為「1」,數值部分按位取反。
......>>

問題二:補碼與反碼有什麼用處? 在現在的計算機中,用補碼表示有符號數,其計算方法,和無符號數的計算方法相同,所以可以共用一個運算器。
因此,在計算機里弧,通用的是補碼。
原碼和反碼,都是用於求補碼的中間過程,一般都是寫在紙面上,並不存入計算機。

問題三:計算機的原碼,反碼,補碼是怎麼回事?可以舉例說明嗎? 計算機以二進制補碼存儲數據
以16位機器為例:
比如83的二進制碼為:0000 0000 0101 0011
由於正數的源碼、反嗎、補碼,上面的既是源碼,也是反碼和補碼
下面通過負數講解源碼、反碼、補碼之間的關系
以-83為例
先求出-83絕對值的源碼:0000 0000 0101 0011
計算機區分正負數通過判斷最高位符號位,1為負數、0為正數
那麼-83的源碼為:1000 0000 0101 0011
反碼在源碼基礎上按位取反,符號位不變:1111 1111 1010 1100
補碼在反碼的基礎上加1:111場 1111 1010 1101
補碼轉源碼:補碼基礎上按位取反後加一,符號位在取反時不變,加一時最高位符號位有進位的,進位忽略
取反:1000 0000 0101 0010
加1:1000 0000 0101 0011

問題四:原碼,反碼和補碼表示的規則分別是什麼 一. 機器數和真值
在學習原碼, 反碼和補碼之前, 需要先了解機器數和真值的概念.
1、機器數
一個數在計算機中的二進製表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數為0, 負數為1.
比如,十進制中的數 +3 ,計算機字長為8位,轉換成二進制就是00000011。如果是 -3 ,就是 10000011 。
那麼,這里的 00000011 和 10000011 就是機器數。
2、真值

為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 -3
而不是形式值131(10000011轉換成十進制等於131)。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值。
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = C000 0001 = C1
二. 原碼, 反碼, 補碼的基礎概念和計算方法.
在探求為何機器要使用補碼之前, 讓我們先了解原碼, 反碼和補碼的概念.對於一個數, 計算機要使用一定的編碼方式進行存儲. 原碼, 反碼, 補碼是機器存儲一個具體數字的編碼方式.
1. 原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符號位. 因為第一位是符號位, 所以8位二進制數的取值范圍就是:
[1111 1111 , 0111 1111]

[-127 , 127]
原碼是人腦最容易理解和計算的表示方式.
2. 反碼
反碼的表示方法是:
正數的反碼是其本身
負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可見如果一個反碼表示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算.
3. 補碼
補碼的表示方法是:
正數的補碼就是其本身
負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
對於負數, 補碼表示方式也是人腦無法直觀看出其數值的. 通常也需要轉換成原碼在計算其數值.

問題五:原碼反碼和補碼區別 原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值,如
[+1]原 = 0000 0001
[-1]原 = 1000 0001
正數的反碼是其本身
負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
補碼的表示方法是:
正數的補碼就是其本身
負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
正數的源碼,反碼,補碼都一樣

問題六:相對於原碼和反碼,補碼表示法有什麼優點和缺點 原碼表示法是機器數的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數值一般用二進制形式表示。
機器數的反碼可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。
機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。
如果是為了考試,死記即可。但我總想搞清楚為什麼計算機裡面的數要這樣子表達?意義何在?-128的補碼為什麼是10000000?為什麼補碼有這么奇怪的運算規則?計算機算減法的時候都需要從源碼到補碼的計算嗎?
思路
google了一下,看到了這樣一篇文章,注意到文中關於補碼來歷的描述,可以總結如下:
計算機裡面,只有加法器,沒有減法器,所有的減法運算,都必須用加法進行。
用補數代替原數,可把減法轉變為加法。出現的進位就是模,此時的進位,就應該忽略不計。
二進制下,有多少位數參加運算,模就是在 1 的後面加上多少個 0。
補碼就是按照這個要求來定義的:正數不變,負數即用模減去絕對值。
補充解釋一下「模」的概念(不準確):
考慮時鍾上時間的計算,假設現在時針指向數字3,若問「6小時前時針指向的數字是幾」,則可以:
1. 將時針逆時針撥動6格。
2. 將時針順時針撥動12 - 6 = 6格。
兩者的結果是一樣的。這里稱12為「模」。
故有 3時 - 6個小時 = 3時 + (12 - 6個小時),這里可以看到將減法轉換成加法的過程,即「加上模減去絕對值的差」。
所以,假設模是10,有效位數為1,當我們計算 9 - 7 的時候:
9 - 7 => 9 + (10 - 7) = 12,去掉最高的位後,得到2,這是正確的結果。
作者的意思是說,計算機裡面所有數都以補碼形式保存,加減運算都是補碼之間的加法運算。然後作者提出了一個我之前沒聽過的觀點:
補數 和 補碼的定義式 裡面,根本就沒有什麼符號位。這最高位的1、0是自然出現的,並不是由人來規定的。
的確,符號位在補碼運算裡面是「模」,本身並不帶符號的意義。因為計算機將加法轉換成加上一個「負數」,而負數又以補碼的形式表現。補碼比源碼多一位,從這多出來的一位可以推斷出原來數字的正負號,所以成為了符號位。也可以這樣認為,留出一位(不全部占滿)的原因是要用「模」來表示正負數。
也就是說,不是特意留出一個符號位,用1和0來表示正負號。而是補碼運算可以用最高位來表示正負,所以符號位誕生了。
那麼為什麼-128的補碼是10000000?可以這樣理解。-128是一個負數,所以它的補碼是它的「模」減去它的絕對值,即:
100000000 - 10000000 = 10000000
那麼為什麼負數補碼等於源碼的反碼加一呢?可以這樣推導:
100000000 - 10000000
= (11111111 + 00000001) - 10000000
= 11111111 - 10000000 + 1
= 01111111 + 1 反碼加一
= 10000000
由此我們得知,在計算機裡面所有的數字都以補碼形式存儲。127存成01111111,-127存成11111111,算減法就變成算加法了,盡管你看到的是「-」號。...>>

問題七:c語言中的原碼,反碼,補碼有什麼作用,是用來做什麼的 計算機中的整數類都是用補碼來存儲的。
而C語言中不需要關心原反補碼!

❸ 計算機內部如何存儲數據,關於源碼、補碼的問題!

1.
補碼
(1)正數的補碼
與原碼相同。 【例1】+9的補碼是00001001。(備註:這個+9的補碼說的是用8位的2進制來表示補碼的,補碼表示方式很多,還有16位2進制補碼表示形式,以及32位2進制補碼表示形式等。)
(2)負數的補碼
符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1。 同一個數字在不同的補碼表示形式里頭,是不同的。比方說-15的補碼,在8位2進制里頭是11110001,然而在16位2進制補碼表示的情況下,就成了1111111111110001。在這篇補碼概述里頭涉及的補碼轉換默認了把一個數轉換成8位2進制的補碼形式,每一種補碼表示形式都只能表示有限的數字。
原碼
原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面 原碼
增加了一位符號位(即最高位為符號位),該位為0表示正數或者0(當為0時第一位不能為1,因為如果把10000000也當成0會造成和-128原碼沖突),該位為1表示負數,其餘位表示數值的大小。
反碼
所謂原碼就是二進制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。 反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。 補碼表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

2.
(1)、在計算機系統中,數值一律用補碼來表示(存儲)。 主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補 碼表示的數相加時,如果最高位(符號位)有進位,則進位被舍棄。
(2)、補碼與原碼的轉換過程幾乎是相同的

3. 2.^4+2.^1 = 17 表示 17
謝謝 採納

❹ 二進制中有沒有辦法判斷前面是符號位還是源碼比如-60和196的二進制是一樣的

沒辦法,因為首先要知道數據類型,是有符號數還是無符號數,無符號數則就是實際值,有符號數則要轉換。這兩個數在內存里都是11000100,如果是無符號數,它就是196,如果是有符號數,那就要轉換成10111100,這就是-60(最高位是負號)

閱讀全文

與無符號數是源碼嗎相關的資料

熱點內容
redhatlinux最新 瀏覽:177
python字典編程詞彙 瀏覽:144
微信和伺服器如何通訊 瀏覽:10
百家號伺服器配置有什麼用 瀏覽:598
怎麼為電腦加密 瀏覽:58
伺服器出現差錯是什麼意思 瀏覽:616
蘋果app移到商店裡怎麼刪掉 瀏覽:254
phpjsphtml 瀏覽:63
吃雞手機國際服伺服器超時怎麼辦 瀏覽:68
努比亞Z5無命令 瀏覽:642
展示網站雲伺服器 瀏覽:872
代碼混淆器php 瀏覽:366
貝恩pdf 瀏覽:208
丙烯pdf 瀏覽:367
雲伺服器華碩 瀏覽:713
sublime3運行python 瀏覽:191
怎麼把安卓視頻傳到蘋果上面 瀏覽:83
手機拍鬼片用什麼app 瀏覽:642
爬山虎app是干什麼用的 瀏覽:507
有哪些寫給程序員的歌 瀏覽:51