新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于補碼運算的一點看法

        關于補碼運算的一點看法

        作者: 時間:2016-12-01 來源:網絡 收藏
        這兩天數電課說了補碼這個概念,可是為什么補碼可以代替負數運算,書上沒有說清楚,按位取反再加一的原因書上也沒說太清楚,在這里我說一點我的看法。

        首先說一下模的概念,對于范圍是【0,m-1】的整數計量單位,其模為M,和為M的兩個數互為補數,就像時鐘,計量單位是[0,11],那么模就是12,7與5就互為補數。

        本文引用地址:http://www.104case.com/article/201612/324218.htm

        如果兩個整數,a,b∈【0,m-1】,那么,定義一個映射f,

        使f(a-b)=f(a+c), 其中,c=m-b,是b的補碼, f定義為

        當0≤x

        當x≥m時,f【x】=x%M(此處為模運算,學過C的應當知道);

        當x<0時,f[x]=f(m-(-x)%m)……… 此處是為了保證自變量為正數;

        這三個公式可以由計算機原理的溢出來隱式實現,于是天生就有 a-b=a+c ,所以減運算變成了加運算,于是計算機把-b表示成了補碼c;

        現在說一說取反加一的問題,假設計算機上的機器字有n位,那么就有m=2n,所以c=2n-b,人在紙上怎么計算c=2n-b的值呢,是這樣的: 的原碼是1后面跟n個0,直接用來減b的原碼不方便,于是就先用2n-1(n個1)減b的原碼,得到的結果再加上一就是2n-b的值,這就是計算機類書籍上說的“取反加一”

        數學中的整數相加,仍然是一個整數,但是一個集合內的兩個整數相加,卻不能保證還在這個集合內,用代數的術語來講,叫做 "不滿足封閉性",這是個很壞的性質,而補碼的提出就是為了用封閉的運算來解決這個問題,

        當然,這都是個人理解,歡迎指正,順帶說一句,這是我和謝奇同學的討論結果。



        關鍵詞: 補碼運算負數運

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 云梦县| 五家渠市| 定安县| 马尔康县| 祥云县| 大洼县| 芮城县| 承德县| 钟祥市| 屏山县| 乌兰察布市| 奉化市| 隆安县| 衡阳市| 宁津县| 宜君县| 平昌县| 天柱县| 海丰县| 思茅市| 华蓥市| 铅山县| 新密市| 保定市| 宝坻区| 甘孜县| 休宁县| 霍州市| 天气| 黑水县| 乌拉特前旗| 永康市| 景洪市| 东丽区| 昌乐县| 英山县| 子长县| 景东| 司法| 青龙| 满城县|