亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

用十進制去看待二進制補碼的減法并理解原理

標簽:
數據結構

一:用十进制去看待补码的减法

比如计算8-7,

补码的减法就是相当于要把它变成8加上一个正数,且答案和8-7一样,

8加上什么正数等于1呢?我要说答案是3,你会不会扁我?但是补码它就是这么干的,而且答案还是正确的!!!。

设计补码的目的就在于有意识地引用了计算机对符号位的自动处理,利用了最高位进位的自动丢弃实现了符号的自然处理。

比如上题8+3=11,11丢掉10之后就是1了,也就是8-7的正确答案。

二;用十进制去理解补码的减法。

不仅是8-7可以转化为8+3-10,任何有限的整数都可以通过这个方法来把

减法(被减数-减数=差)转化为加法(加数2+加数2=和)。

比如:

9-2=9+8-10;

127-45=127+55-100;

1-99945=1+55-100000;

我们可以通过用比减数高一位的一个计数单位减去减数来得到将来要用到加法里面的加数2。

比如10-2=8,100-45=55,100000-99945=55;

实际上带符号机器数的负数补码也可以通过用高一位的一个计数单位减去正数的补码这种方法得到,如:

10000000—[+045]补(00101101)=[-045]补(11010011);

哦,我们可以看到:

(1)将正数的补码其绝对值按位求反(即1变0,0变1)后再末尾加1

(2)用高一位的一个计数单位减去正数的补码

(1)和(2)其结果是一样的!!!

为什么呢?

试着用十进制理解,

(10-2=8)是不是就是(10-1-2+1=9-2+1=8)?

(100-45=55)是不是就是(100-1-45+1=99-45+1=45)?

在二进制里面(9-2)以及(99-45)就相当于其绝对值按位求反。

比如11111111-00101101=11010010;

而在二进制里面(9-2+1)以及(99-45+1)就相当于其绝对值按位求反再末尾加1。

比如11111111-00101101+1=11010011;

最后:

二进制里用高一位的一个计数单位减去正数的补码就相当于绝对值按位求反再末尾加1!!!

比如100000000-00101101=11111111-00101101+1=11010011;

综上,我们会发现,

直接进行减法运算,熟能生巧,这是人类擅长的。

按位取反,末尾加一,自动丢弃最高位的进位。这是计算机擅长的。

补码的减法正是人类针对计算机的特性,将其优点尽量发挥的一种编码方式。

PS:计算机中的数据用采用二进制计数制的机器数来表示。

带符号的机器数最高位为0表示正,为1表示负。

补码是带符号的机器数采用的一种编码方式,n位带符号的机器数

正数的补码其最高位为0,其余的n-1位表示数值的绝对值。

负数的补码是将正数的补码其绝对值按位求反(即1变0,0变1)后再末尾加1。

举例如下:(若机器字长n等于8)

[+001]补=00000001,[-001]补=11111111

[+127]补=01111111,[-127]补=10000001

[+045]补=00101101,[-045]补=11010011

补码有个特点,就是其减法可以转化为加法来做。即[x]补-[y]补=[x]补+[-y]补

比如[+127]补-[+045]补=[+127]补+[-045]补

點擊查看更多內容
8人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消