① 計算機內部如何存儲數據,關於源碼、補碼的問題!
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
謝謝 採納
② 源碼反碼與補碼
8位2進制原碼反碼補碼表示法:第一位是符號位,正數為0負數為1
-67的原碼是11000011,換成反碼符號位不變,其他各位依次求反:
10111100,換成補碼只在反碼基礎上末位加1:
10111101。
55的原碼00110111,正數原碼反碼補碼相同。
補碼實現55-67:00110111
+10111101
---------------------------
11110100
把這個補碼末位減一,符號位不變各位取反得到結果的原碼表示:10001100,
轉換成十進制剛好等於-12,驗證了結果11110100是正確的。
③ C語言源碼生成目標文件後的二進制碼是原碼,反碼,還是補碼
計算機中的二進制碼形式特指數值的二進制碼形式。
目標文件中包含有字元串、指令、相關數據等,其中數據部分大多是用補碼形式保存的。其它部分沒有這樣的概念。
說大多是因為有些計算機體系不用補碼形式保存數據。
至於計算機倒底何時用原碼、反碼、補碼,我想是樓主對碼制有所誤解。
採用何種碼制與CPU相關。比如I386體系,負數用補碼表示,C語言編譯器在遇到負數時會轉化成補碼形式。
④ 原碼和補碼是什麼意思
原碼,沒有任何意義。
補碼具有:用正數代替負數,把減法變成加法運算的功能。
這樣,計算機中,只需用一個加法器,便可進行加減運算了。
所以,在計算機中,只是使用補碼。根本就不用原碼和反碼。
對於鍾表,倒撥 4 小時,可用正撥 8 小時代替。
對於十進制數,減一,可以用 +99 代替。
比如:24-1 = 23
24 + 99 = (1) 23
忽略進位,只取低兩位,結果就是相同的。
這里用來代替負數的正數,就叫做「補數」。
計算機用二進制,就叫做「補碼」。
正數,直接運算即可,不用求補碼。
負數的補碼是:模+該負數。
八位二進制的模是:2 的 8 次方=256。
-1 的補碼,就是:256-1 =255 = 1111 1111(二進制)。
-2 的補碼,就是:256-2 =254 = 1111 1110(二進制)。
。。。。。。
-128 的補碼,就是:256-128 =128 = 1000 0000(二進制)。
求補碼,用公式就可得出,並不需要繞道原碼反碼符號位。
⑤ 什麼是源碼 什麼是補碼 什麼是反碼
0原碼是00000000
-0原碼是10000000
0反碼是00000000
-0反碼是11111111
0補碼是00000000
補碼沒有正0與負0之分
正數的反碼、補碼和其原碼相同負數的反碼是其原碼除符號位外其他位取反負數的補碼是取其反碼後加1
⑥ 源碼 反碼 補碼的概念
帶符號數,有三種表示方法,即:原碼、反碼和補碼。
但是,在計算機系統中,數值一律用【補碼】來表示和存儲。
所以,在計算機系統中,原碼和反碼,都是不存在的。
使用補碼的意義:可以把減法或負數,轉換為加法運算。
因此,就能簡化計算機的硬體。
=====================
補碼的概念,來自於:補數。
比如鍾表,時針轉一圈,周期是 12 小時。
那麼,倒撥 3 小時,可以用正撥 9 小時代替。
9,就是-3 的補數。計算方法:9 = 12-3。
同理,分針倒撥 X 分,可以用正撥(60-X)代替。
60,是分針的周期。
同理,三角函數的周期是 2π。那麼,
在-π/2 處的函數值,就與2π-π/2 = +3π/2處相同。
------------
當你使用兩位十進制數:0~99,周期就是 一百。
那麼,減一,就可以用 +99 代替。
24-1 = 23
24 + 99 = (1) 23
舍棄進位,這兩種演算法,功能就是相同的。
於是,99 就是 -1 的補數。
其它負數的補數,可以按照下式來求:
補數 = 周期 + 負數
------------
計算機中使用二進制,補數,就改稱為【補碼】。
八位二進制是:0000 0000~1111 1111。
相當於十進制:0~255,周期就是 256。
那麼,-1,就可以用 255 = 1111 1111 代替。
所以:-1 的補碼,就是 1111 1111 = 255。
同理:-2 的補碼,就是 1111 1110 = 254。
繼續:-3 的補碼,就是 1111 1101 = 253。
。。。
最後:-128 的補碼,就是 1000 0000 = 128。
負數補碼的計算公式:【 256 + 這個負數 】。
(式中的 256 = 2^8,是八位二進制的周期。)
正數,並不存在補碼的問題。
所以,正數,並沒有補碼,可以直接運算。
(也有人亂說:正數本身就是補碼。)
------------
求解算式:7-3 = 4。
計算機中,並沒有減法器,必須改用補碼相加。
列豎式如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得:(1)0000 0100= 4 的補碼
舍棄進位,只保留八位,結果完全正確。
------------
藉助於補碼,可以簡化計算機的硬體。
原碼和反碼,都沒有這種功能。
所以,在計算機中,根本就沒有原碼和反碼。
它們都是什麼?就不用關心了。
⑦ 要源碼和補碼到底是干什麼呢,我實在搞不懂
正數的原碼,反碼,補碼相同,沒有變化。
負數才有 原碼,反碼,補碼 的區別。
負數,不考慮符號位外的各位,按位取反,(1變0,0變1),就成反碼。
反碼加1,就是補碼。
電腦里負數用的是補碼。
強調一下:負數才有 原碼,反碼,補碼 的區別。
正0 -- 是正數。
負0 -- 是負數,有 原碼,反碼,補碼 的區別。負數用的是補碼。
負數用補碼,使減法變加法做,計算機硬體有 加法器,用補碼,直接用加法器做減法,速度快。
⑧ 證書的原碼,反碼,補碼相同
正數的是相同的。