導航:首頁 > 源碼編譯 > 正數的源碼是真值的符號位用

正數的源碼是真值的符號位用

發布時間:2023-01-30 04:41:23

Ⅰ 正數的原碼、反碼、補碼是相同的嗎

相同。

正數的原碼=反碼=補碼。引進補碼的作用是為了讓計算機更方便做減法。

例如:按時間12個小時來算,現在的准確時間是4點,有一個表顯示的是7點,如果要校準時間,我們可以將時針退7-4=3格,也可以向前撥12-3=9格,計算機做減法就可以轉化成-3=+9,這樣可以簡化計算機的硬體設備去做復雜的減法。

原碼求補碼

正整數的補碼是其二進製表示,與原碼相同。

例:+9的補碼是00001001。(備註:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。每一種補碼表示形式都只能表示有限的數字。)

求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1。

同一個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進制中是11110001,然而在16位二進制補碼表示中,就是1111111111110001。以下都使用8位2進制來表示。

以上內容參考:網路-補碼

Ⅱ 整理一下關於原碼反碼補碼筆記

一個數據表示時使用,第一位為符號位,剩餘的為有效位

字16位 1位符號 15有效數據位

int>整數 4個位元組32

-2 31-2 32-1

long>長整形8個位元組64一位符號63

-2 63-2 63-1

1000 0111 (-7)二轉十

機器數
機器數就是一個數在計算機中二進製表現形式
+3 0000 0011
+7 0000 0111
-5 1000 0101

機器數的真值
將帶符號位的機器數對應的真正數值稱為機器數的真值
0000 0011 = +3
0000 0111 = +7
1000 0101 = -5

原碼就是符號位加上真值的絕對值

求原碼:

34=00100010

原碼 -39 1 0 1 0 0 1 1 1

原碼 -55 1 0 1 1 0 1 1 1

正數:正數的反碼=源碼 如 +9:0000 1001 源碼=0000 1001 反

負數:符號位不變,其餘各位琢一取反,只有兩種狀態{0,1},即1->0 0->1

負數
負數的反碼是保持符號位不變,其餘各位直接取反
取反: 只有0 和 1兩種狀態,也就是 0 -> 1 , 1 -> 0
-3 1000 0011[原] = 1111 1100[反]

正數:正數的原碼=反碼=補碼 如+3 0000 0011 {原}=0000 0011{反}=0000 0011 {補}

負數:先求的反碼,在負數反碼的基礎上,加一

補碼需要在反碼的基礎上轉換得到
正數
正數的原碼 反碼 補碼 全部相同
+1 0000 0001[原] = 0000 0001[反] = 0000 0001[補]

負數
負數的補碼需要在反碼的基礎上,最後一位加 1;
-3 1111 1100[反] = 1111 1101[補

擴展

為什麼需要反碼和補碼?

在設計計算機時,只設計了加法器沒有設計減法器

5-3=5+(-3)

原碼

5=0000 0101 (原碼)

-3=1000 0011 (原碼)

0000 0101

1000 0011

1000 1000 結果(原碼)=-8

原碼不可以直接計算的!

反碼:解決了只設計加法器,使用加法器進行減法運算的問題;

缺點:正負相加0的表示不唯一

1-1=1+(-1)

1=0000 0001 {反}

-1=1000 0001 {原碼}

-1=1111 1110 {反碼}

0000 0001

1111 1110

1111 1111 {反碼}=1000 0000{原碼}=-0 負0

補碼{高位溢出}

1=0000 0001{補}

-1=1111 1111{補}

0000 0001

1111 1111

0000 0000

一個位元組8位,表達的范圍-2 7-2 7-1

32+12=44

44-12=32

44+(-12)=32

將補碼轉原碼

因為負數的補碼不能直接讀出結果,但是原碼可以,所以將補碼轉原碼,可以讀出負數的值

補碼>原碼

原則:==補碼的補碼

把補碼當原碼,求補碼

計算規則:符號位不變,其餘取反,加1;

ASCll編碼:最早的最重要的基本的英美文字的字元集

只使用了低7位二進制,其他的認為無效,它使用了0-127這128個碼位。剩下128個碼位留作擴展,採用順序存儲方式存儲字元

ISO-8859-*

使用ASCll 剩餘的碼位進行擴展

iso-8859-1專門對英語做的擴展 tomcat>默認採用iso-8859-1》utf-8

西歐國家較多,各個國家在ASCll基礎上,擴展形成了自己國家專用的編碼,最終形成了ISO-8859-*系列

GB2312

GB2312字集是簡體,6763個簡體漢字

BIG5

繁體字集

Unicode

字元集(簡稱為UCS)

GBK【936】

是簡繁字集,包括GB2312字集,BlG5字集合一些符號,共包括21003個字元。GBK編碼是GB2312的超級,向下完全兼容GB2312

UTF-8[65001]萬國碼

包含全世界所有國家需要用到的字元,是國際編碼,它對英文使用8位(即一個位元組),中午使用3個位元組

ANSl

ANSl不是一種具體的編碼

系統默認的編碼決定,如果系統的默認的編碼是GBK> ANSl就代表 GBK

認識ASCll碼表

常用:0-9 A-Z a-z對應的ASCll碼分別為:48-57,65-90,97-122

0>48

A>65

a>97

Ⅲ 原碼反碼和補碼有什麼區別

關於原碼反碼補碼,您可以借本
《計算機組成原理》看看計算機中數據的表示形式。

首先更正下樓上的說法,正數的原碼反碼補碼都相同,即0011的反碼也為0011
!!切記

舉例來說:對於正數3,其二進制形式為+0011,我們把+0011成為成為真值,在計算機中用0或1表示正負號,那麼+0011在計算機中原碼可以表示為00011(第一位為符號位)。反碼補碼不變。

對於負數,反碼即按位取反,比如10011可表示-3,10011為原碼,那麼符號位不變,其餘位按位取反即反碼11100.

補碼的存在是為了簡化計算的,其符號位一起參加運算,從而對於減法可轉化為加法。補碼的實質就是mod2。比如我們的鍾表是mod12的,那麼14點鍾我們也可以說是下午2點。獲得補碼的方法是「按位取反,末位加1」那麼10011的補碼便是11101.。。。。。。。。。。

機器數即數值在計算機中的表示形式。

不知您明白了嗎?

Ⅳ 原碼反碼和補碼區別

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

Ⅳ 原碼反碼補碼的意義

問題一:原碼、補碼和反碼的概念??? 數在計算機中是以二進制形式表示的。
數分為有符號數和無符號數。
原碼、反碼、補碼都是有符號定點數的表示方法。
一個有符號定點數的最高位為符號位,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]原= 0000 0001

[-1]原= 1000 0001

第一位是符號位. 因為第一位是符號位, 所以8位二進制數的取值范圍就是:

[1111 1111 , 0111 1111]

即[-127 , 127]

原碼是人腦最容易理解和計算的表示方式.

2,符號位的機器數對應的真正數值稱為機器數的真值。

例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

Ⅶ 真值的符號位用什麼表示

計算機數值表示中,真值用正負號加絕對值表示,沒有符號位。真值即真實值,在一定條件下,被測量客觀存在的實際值。真值通常是一個未知量,一般說的真值是指理論真值、規定真值、相對真值。

真值不是一個純客觀的概念,它與人為的定義聯系在一起。沒有給定的特定量的定義,也就無從談起這個量的真值。即使對於一個具體的量塊的厚度這樣一個特定量,由於量塊的兩個工作面不可能是理想的平行平面,也就無法肯定只有一個唯一的厚度定義。

求真值的方法

1、由國家基準或當地最高計量標准復現而賦予該特定量的值。

2、採用權威組織推薦的該量的值。例如,由國際數據委員會(CODATA)推薦的真空光速、阿伏加德羅常量等特定量的最新值。

3、有時用某量的多次測量結果來確定該量的約定真值。

4、對於硬度等量,則用其約定參考標尺上的值作為約定真值。

以上內容參考 網路-真值

閱讀全文

與正數的源碼是真值的符號位用相關的資料

熱點內容
vue類似電腦文件夾展示 瀏覽:111
後備伺服器有什麼功效 瀏覽:268
連不上伺服器怎麼連 瀏覽:600
什麼構架的可以刷安卓系統 瀏覽:771
愛奇藝APP怎麼兌換CDK 瀏覽:994
程序員買4k顯示器還是2k顯示器 瀏覽:144
python多進程怎麼多窗口 瀏覽:818
電腦文件夾怎麼取消類別 瀏覽:47
cad拉線段命令 瀏覽:924
如何用電腦清理手機沒用的文件夾 瀏覽:100
儲存層次結構對程序員的意義 瀏覽:477
微信文件夾查看器 瀏覽:952
android視頻聊天開源 瀏覽:552
思科iso命令 瀏覽:944
手機網頁源碼里的視頻地址 瀏覽:681
哈利波特魔法覺醒要怎麼選伺服器 瀏覽:993
情感交友網站php 瀏覽:942
id下載不了app怎麼回事 瀏覽:996
有什麼好看的伺服器小說 瀏覽:293
程序員四級沒過有什麼影響 瀏覽:540