多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 互聯(lián)網(wǎng) > 機器語言――碼運算(詳解反補碼由來)

機器語言――碼運算(詳解反補碼由來)

來源:程序員人生   發(fā)布時間:2014-10-03 08:00:00 閱讀次數(shù):2641次

在高中之前,數(shù)學(xué)是這樣的,1+1=2 .這些都是死的。

上了大學(xué)之后,這個世界是這樣的……

機器語言最低級的語言,只有兩個標志 0和1.通過這兩個標志來實現(xiàn)計算。

以前我們所做的數(shù)學(xué)運算都是在10進制上面進行的。而計算機只能用二進制的數(shù)來進行運算。

 

大家都知道9用機器語言為 1001(進制的轉(zhuǎn)換不做詳細介紹)

再轉(zhuǎn)換之前,這個數(shù)可是有要求的,這個數(shù)必須是正整數(shù),才可以進行轉(zhuǎn)換。如果這個數(shù)為 -9,那么這個數(shù)如何用機器語言來表示呢。如果是小數(shù),又是如何表示的。

 

原碼:

+9和-9,不就是相差一個符號么,多給一個位,進行標志不就可以了嘛。

+9表示為 0000 1001

-9表示為 0001 1001

利用二進制的數(shù)來處理 我們已知的問題,無非就是編碼,制定規(guī)則而已。

然后,人們就把這種加上符號位的表示方法 稱為  原碼。

 

計算機中,可以直接計算的運算,只有一個加法。

比如:9+11=20

1001+1011=1 0100 

如果,在進行運算的時候使用原碼進行運算

即:0000 1001+0000 1011=01 0100

 

這個運算是正整數(shù)之間的加法,如果在進行運算的數(shù)之間,有小數(shù),或者 負數(shù)。那應(yīng)該如何處理呢?

注:下面中的碼,帶下劃線的為符號位。

 

反碼:

人們都知道,包含負數(shù)的加法,實際上就是所謂的減法。所以要處理的就是,如何把負數(shù)加入到剛才的加法運算中。

9-3=6   改寫成9+(-3)=6

使用原碼表示進行運算:0000 1001 +0001 0011=11100=-12

 

這個結(jié)果,顯然就不正確了吧。

那這個問題又是如何產(chǎn)生的?這個問題,是由于把原碼中的符號位進行了計算,導(dǎo)致結(jié)果不正確的。

 

既然結(jié)果不正確,那么就編唄。反正找到一個能計算正確的規(guī)則。起個名字不就得了。

首先,要想正確,需要把符號位 也可以進行計算。

首先,兩個數(shù)進行運算的時候.符號位后面的字符串,代表的才是真實數(shù)值的絕對值。

 

補碼引例

    在說補碼之前,先舉一個例子。

    在現(xiàn)實生活中,某一個時刻,你看鐘表的時候是9點。之后,你活動了9個小時。現(xiàn)在是幾點?

 

   先說正常人是怎么算的,正常人肯定是:9+9-12=6  嗯,現(xiàn)在6點了。

   還有一種算法,就是。你知道12個小時是一圈。那么過去了9個小時,則可以這么算:9-(12-9)=6  也是6點。

 

在來看一個上面這個例子:

   +9 + (-3)

   0000 1001 + 0001 0011

 

如果利用原碼進行計算,肯定結(jié)果不正確了。符號位之前的暫時不考慮

我把負數(shù)的原碼 進行一下轉(zhuǎn)換,轉(zhuǎn)換成 1100

之后在進行計算: 0000 1001 + 0001 1100  = 0010 0101     符號位發(fā)生了變化。 數(shù)值應(yīng)該為21.但是21>15=2^4-1 所以 影響了符號位。 在自己算一下 -3 到 12的改變量。 所以結(jié)果為 21-15=+6

 

在此之前,沒有考慮符號位。不考慮符號位,將符號位之后的符號,都按位取反。0改成1,1改成0.

這個形式的編碼稱為 反碼。

 

這樣計算機就可以計算 二進制的減法了。

 

補碼

   在上述的減法運算中,雖然可以得到運算的結(jié)果。但是親們發(fā)現(xiàn)了沒。數(shù)值6根本就沒有在結(jié)果中顯示出來。

   所以為了解決上述問題。由-3 轉(zhuǎn)換成 +12的 過程中,數(shù)值改變了15. 但是,15這個數(shù)值 效果,不能等價于 時鐘運算中的 12小時。 所以要將反碼進行+1之后再進行計算。

   即 -3的補碼=反碼+1=0001 1100 +1=0001 1101

 

   之后的運算:0000 1001+0001 1101=00101010  數(shù)值為+6

   符號位,發(fā)生變化 偶數(shù) 仍為正數(shù)。

 

   現(xiàn)在懂了什么叫補碼了吧。補碼,你還記得什么叫補角嗎?這個跟那個意思一樣,就是湊一塊就圓滿了。

補碼就是 在原碼的基礎(chǔ)上,找到那個  與他正好互補,以便形成一個符號位的數(shù)。

最簡單的獲取方式:原碼-〉反碼  然后+1

 

浮點數(shù)

   在計算機的運算中,也要處理小數(shù)的運算。即所謂的浮點數(shù)。

   上次某同學(xué)問我,這個題怎么 0.1+0.1=1啊 。這明顯就是一個坑啊。利用人們已經(jīng)形成的十進制思想,導(dǎo)致想不通。

   在學(xué)習(xí)這個問題之前,首先要說一下,在10進制的小數(shù)中,是怎么定義的。

0.1 0.01 分別代表什么。

   十進制中,每個位置所代表的權(quán)重都是不同的。

   比如100 中的 1,所代表的就是 10^2

   那么,0.01中的1代表的是什么? 很顯然  這個小數(shù)里面的1 所代表的是 10^-2

 

同樣的,十進制的數(shù)值每個位置都有自己的權(quán)重。那么在2進制的數(shù)值中。每個數(shù)也都有自己的權(quán)重。

0.1 很明顯就是 2^-1 了。 那么0.1+0.1 …… 你的世界觀還沒被毀……

 

至于浮點數(shù)的運算,我就不

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久se精品一区精品二区 | 福利亚洲 | 欧美一级免费看 | 亚洲一区二区三区麻豆 | 国产成人亚洲精品久久 | 日本乱妇| 久久精品观看影院2828 | 国产一区二区高清视频 | 国内久久久久久久久久 | 日本一区二区视频 | 大学生一级一片第一次免费 | 最近中文字幕完整国语视频 | 波多野结衣中文字幕在线 | 三级黄在线 | 黑人巨大xxx| 69av在线 | 国产第3页 | 性福利影院| 免费一区二区三区久久 | 久久久国产这里有的是精品 | 亚洲综合精品成人 | 亚洲一区二区三区视频 | 欧美 日本 | 中文字幕看片在线a免费 | 国产福利视频一区 | 欧美俄罗斯一级毛片 | 伊人久久久综在合线久久在播 | 国产高清吃奶成免费视频网站 | 一区二区视频在线观看免费的 | 成人夜视频 | 国产亚洲欧美在线视频 | aa老外一级毛片 | 亚洲欧美另类日韩 | 午夜看片网站 | 一区二区三区久久精品 | 日韩欧美视频一区 | 羞羞人成午夜爽爽影院 | 亚洲在线不卡 | 亚洲一区二区三区深夜天堂 | www.黄色免费网站 | xxx国产精品 |