二补数 (2's complement)


二补数 (2's complement) :是一种用二进位表示有号数的方法,也是一种将数字的正负号变号的方式,常在计算机科学中使用。

一个数字的二补数就是将该数字作位元反向运算(即一补数),再将结果加 1,即为该数字的二补数。
在二补数系统中,一个负数就是用其对应正数的二补数来表示。

优点:二补数系统的最大优点是可以在加法或减法处理中,不需因为数字的正负而使用不同的计算方式。
只要一种加法电路就可以处理各种有号数加法,而且减法可以用一 个数加上另一个数的二补数来表示,因此只要有加法电路及二补数电路即可完成各种有号数加法及减法,在电路设计上相当方便。

特点:二补数系统的 0 只有一个表示方式,这点和一补数系统不同(在一补数系统中,0 有二种表示方式),因此在判断数字是否为 0 时,只较比对一个不同的条件即可。

具体算法:(转贴:原地址: http://entry.hit.edu.tw/~bd92046/new_page_1.htm

二补数转换方法差异

方法1:

10進制轉2進制:

<1>直接將10進制轉為2進制,正負號省略。

<2>如果數目少於X bits,在左邊補0直到X bits。

<3>如果是正號,不需要其他動作。

如果是負號,使用1補數:將0變1,1變0;1補數加1,形成2補數。

例(1):將+6以16bit儲存,使用2補數。

+6 => 110 => 0000000000000110

例(2):將-125以16bit儲存,使用2補數。

-125 => 1111101 => 0000000001111101

=> 1111111110000010 => 1111111110000011

2進制轉10進制:

<1>如果最左邊的bit是0(正數)。

1-1…將數字由二進制轉為十進制。

1-2…在數字前加+號。

例:將0000000000000110轉為十進制(使用2補數)

0000000000000110 => 6 => +6

<2>如果最左邊的bit是1 (負數)。

2-1…2補數減1,變為1補數。

2-2…將所有的0變1;1變0。

2-3…將數字由2進制轉為10進制。

2-4…在數字前加-號。

例:將1111111110000100轉為十進制(使用2補數)

1111111110000011 => 1111111110000010

=> 0000000001111101 => 125 => -125

方法2:

10進制轉2進制:

<1>將數字改為2進制;正負號省略。

<2>如果數目少於X bits,在左邊補0直到X bits。

<3>如果是正號,不需要其他動作。

如果是負號,維持最右邊的0直到第一個1(包含)不變,其餘的皆變換。

(0變1,1變0)

例(1):將+6以16bit儲存,使用2補數

+6 => 110 => 0000000000000110

例(2):將-125以16bit儲存,使用2補數

-125 => 1111100 => 0000000001111100 => 1111111110000100

2進制轉10進制:

<1>如果最左邊的bit是0 (正數)。

1-1…將數字由2進制轉為10進制。

1-2…在數字前加+號。

例:將0000000000000110轉為10進制(使用2補數)

0000000000000110 => 6 => +6

<2>如果最左邊的bit是1 (負數)。

2-1…維持最右邊的bits不變直到第一個1(包含),其餘的皆變換。

(0變1,1變0)。

2-2…將數字由2進制轉為10進制。

2-3…在數字前加-號。

例1111111110000011轉為10進制(使用2補數)

1111111110000010 => 0000000001111101 => 125 => -125

二者之間的差異

10進制轉2進制:

方法1需要先轉換到1補數,再用1補數+1轉為2補數,使用上較為簡單,

但計算速度比較慢。

方法2就直接轉換成2補數,在使用上比較容易出錯,不過計算速度會比較快。

2進制轉10進制:

方法1須先使-1變為1補數,然後才能轉換成10進制,計算較為簡單,計算速度緩慢。

方法2可以直接轉換,比較容易出錯,但計算速度較快。

优质内容筛选与推荐>>
1、使用SourceSafe进行Web开发的一个小建议。
2、【转】缓存几个重要概念
3、弹出窗口取不到文本框值
4、构建之法阅读心得(五)
5、between…and…用法


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号