二進制加減運算

今天有人問我這個二進制減法(就是減出來是負數那種),寫一篇吧。

首先我們需要明白計算機類的加減法,都是採用補碼進行運算

所以首先搞清楚

 

第一位是符號位. 因爲第一位是符號位, 所以8位二進制數的取值範圍就是:

[1111 1111 , 0111 1111]

也就是[-127,127];

第一位是1代表負數,第一位0代表正數

 

原碼,反碼,補碼的關係

 

正數:原碼=反碼=補碼

例如: 5,原碼:0000 0101 反碼:0000 0101 補碼:0000 0101

 

負數:反碼是原碼 除符號位都取反,補碼:反碼+1

例如:-5 ,原碼:1000 0101 反碼:1111 1010 補碼:1111 1011

 

運算是以補碼的形式進行的

 先轉換成原碼,將帶負號的也轉成原碼,將原碼轉成補碼,再將兩個補碼進行計算             

例如 6-3 = 0000 0110 - 0000 0011 = 0000 0110 + 1000 0011 = 0000 0110 + 1111 1101 = 1 0000 0011

1 0000 0011 只取前8位,所以是補碼爲0000 0011 又因爲第一爲0所以是正數,所以原碼就是0000 0011 也就是3

 

例如 3-6 = 0000 0011 -  0000 0110 = 0000 0011 + 1000 0110 = 0000 0011 + 1111 1010 = 1111 1101

1111 1101 是一個補碼,因爲第一位符號位是1所以求原碼,先求反碼爲1111 1100 原碼爲 1000 0011 也就是-3 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章