计算机组成原理1--原码、反码、补码、移码之间的关系
生活随笔
收集整理的這篇文章主要介紹了
计算机组成原理1--原码、反码、补码、移码之间的关系
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- 普遍地說,特定的匯編語言和特定的機(jī)器語言指令集是一 一對(duì)應(yīng)的不同平臺(tái)之間不可直接移植
- 一個(gè)數(shù)在計(jì)算機(jī)中的二進(jìn)制表示形式,??叫做這個(gè)數(shù)的機(jī)器數(shù)。機(jī)器數(shù)是帶符號(hào)的,在計(jì)算機(jī)用一個(gè)數(shù)的最高位存放符號(hào), 正數(shù)為0, 負(fù)數(shù)為1.
- 因?yàn)榈谝晃皇欠?hào)位,所以機(jī)器數(shù)的形式值就不等于真正的數(shù)值。所以,為區(qū)別起見,將帶符號(hào)位的機(jī)器數(shù)對(duì)應(yīng)的真正數(shù)值稱為機(jī)器數(shù)的真值。
- ?原碼
原碼就是符號(hào)位加上真值的絕對(duì)值, 即用第一位表示符號(hào), 其余位表示值. 比如如果是8位二進(jìn)制:
? ? [+1]原 = 0000 0001
? ? [-1]原 = 1000 0001
第一位是符號(hào)位.? ? ? 因?yàn)榈谝晃皇欠?hào)位, 所以8位二進(jìn)制數(shù)的取值范圍就是:
? ? [1111 1111 , 0111 1111]
即
? ? [-127 , 127] - 反碼
反碼的表示方法是:
正數(shù)的反碼是其本身
負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上, 符號(hào)位不變,其余各個(gè)位取反.
? ? [+1] = [00000001]原 = [00000001]反
? ? [-1] = [10000001]原 = [11111110]反
可見如果一個(gè)反碼表示的是負(fù)數(shù), 人腦無法直觀的看出來它的數(shù)值. 通常要將其轉(zhuǎn)換成原碼再計(jì)算. - ?補(bǔ)碼
補(bǔ)碼的表示方法是:
正數(shù)的補(bǔ)碼就是其本身
負(fù)數(shù)的補(bǔ)碼是在其原碼的基礎(chǔ)上, 符號(hào)位不變, 其余各位取反, 最后+1. (即在反碼的基礎(chǔ)上+1)
? ? [+1] = [00000001]原 = [00000001]反 = [00000001]補(bǔ)
? ? [-1] = [10000001]原 = [11111110]反 = [11111111]補(bǔ)
對(duì)于負(fù)數(shù), 補(bǔ)碼表示方式也是人腦無法直觀看出其數(shù)值的. 通常也需要轉(zhuǎn)換成原碼在計(jì)算其數(shù)值. - ?既然原碼才是被人腦直接識(shí)別并用于計(jì)算表示方式, 為何還會(huì)有反碼和補(bǔ)碼呢?
首先, 因?yàn)槿四X可以知道第一位是符號(hào)位, 在計(jì)算的時(shí)候我們會(huì)根據(jù)符號(hào)位, 選擇對(duì)真值區(qū)域的加減. (真值的概念在本文最開頭). 但是對(duì)于計(jì)算機(jī), 加減乘數(shù)已經(jīng)是最基礎(chǔ)的運(yùn)算, 要設(shè)計(jì)的盡量簡(jiǎn)單. 計(jì)算機(jī)辨別"符號(hào)位"顯然會(huì)讓計(jì)算機(jī)的基礎(chǔ)電路設(shè)計(jì)變得十分復(fù)雜! 于是人們想出了將符號(hào)位也參與運(yùn)算的方法. 我們知道, 根據(jù)運(yùn)算法則減去一個(gè)正數(shù)等于加上一個(gè)負(fù)數(shù), 即: 1-1 = 1 + (-1) = 0 , 所以機(jī)器可以只有加法而沒有減法, 這樣計(jì)算機(jī)運(yùn)算的設(shè)計(jì)就更簡(jiǎn)單了. - 正數(shù)的原、反、補(bǔ)碼都一樣:0的原碼跟反碼都有兩個(gè),因?yàn)檫@里0被分為+0和-0
- 0的補(bǔ)碼是唯一的,如果機(jī)器字長(zhǎng)為8那么[0]補(bǔ)=00000000
- 移碼最簡(jiǎn)單了,不管正負(fù)數(shù),只要將其補(bǔ)碼的符號(hào)位取反即可。
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理1--原码、反码、补码、移码之间的关系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB知识点2
- 下一篇: 计算机组成原理——概述1