對於原碼、反碼和補碼有了一些理解,分享給大家
正、負號加某進製數絕對值的形式成為真值
例:x = +1011 y = -1011
符號數位化的數稱為機器數
機器數有四種表示方法:原碼、補碼、反碼和移碼。下面的描述新增為機器字長為
8位二進位制
最高位表示真值符號:0正,
1負,且符號位不參與運算,計算機要實現原碼加(擅長
)和減的運算器
注意:1000 0000和0000 0000都表示0,所以,取值範圍為:[-127,127]
最高位表示真值符號:0正,
1負,且符號位不參與運算,計算機只需實現反碼的加運算器,但需設計反碼符號位和其它位分開的邏輯
注意:1000 0000和0000 0000都表示0,所以,取值範圍為:[-127,127]
最高位表示真值符號:0正,
1負,符號位參與運算(「模」的概念)+0和
-0的表示:
0000
0000
;-128
的表示:
1000
0000
補碼使計算機對所有資料的表示唯一化,+0和
-0表示都用的是高位為0的
128中排序中的同一種排序
(00000000)
,所以,剩下的
127中排序最大可以表示正整數為
127,又因最高位為
1的排序有
128種,所以,可表示的最小負數為
-128
正數:三者相同
負數:原碼對應的反碼為,原碼各位取反
(除符號位);
反碼對應的補碼為,反碼+1;
補碼對應的反碼為,補碼各位取反
(除符號位
)+1;
注意:由於原碼和反碼根本就不存在
-128
的表示,所以,當說到
-128
時,就不能有這種轉換,至於計算機是如何將
-128
真值轉換為補碼,或者說為,計算機是如何將真值轉換為補碼的?我們無序了解,這個就是為什麼上面沒有寫反碼和補碼的得到方式
(我們通常錯誤的理解得到方式是其三者的轉換關係
),可能你會說,
-128
補碼我只能死記硬背了嗎?其實不然,只要我們求出補碼表示-1的
8位二進位制的排列方式,我們就可以推出
-128
的補碼,不明白知道
-1的補碼為什麼就可以推出
-128
的補碼的,可以看看上面「補碼的表示範圍
[-128
,127]
的解釋」的描述
對於原碼、反碼和補碼的產生的原因,以及原碼、反碼和補碼各自的內容,以及之間的關係上面都以講出,認真看的話,可以幫助你理解一些內容。
原碼 反碼 補碼的理解
1 討論原碼之前首先需要了解兩個概念 機器數和真值。a.乙個數值在計算機中的二進位制表示形式,就稱為這個數值的機器數。機器數是帶符號的,其中最高位是符號位,1表示負數,0表示正數。比如,1100 0000就是 64的機器數,即在計算機中的二進位制表示形式。同樣的,0100 0000就是64的機器數。...
原碼反碼補碼的理解
本文採用4位二進位制數的例子,從表象對原碼反碼補碼進行 旨在說明為什麼計算機底層要用補碼表示數字以及用補碼表示數字的優點,不涉及任何數學原理。4位二進位制數的原碼表示 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 ...
原碼,反碼,補碼的研究和理解。
雖然大一上,計算機導論課的時候講過這個問題,但是當時只知道是怎麼計算的,並不能理解其中的原理,最近看了一些資料才理解的比較深刻。主要是看了 c語言中 int型的 取值範圍 這篇,受益很大。那篇文章中舉了乙個例子 假設當前時針指向10點,而準確時間是6點,調整時間可有以下兩種撥法 一種是倒撥4小時,即...