二补数 (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可以直接轉換,比較容易出錯,但計算速度較快。

转载于:https://www.cnblogs.com/sleepy/archive/2011/07/10/2102528.html

二补数 (2's complement)相关推荐

  1. 二补数(2’scomplement)乘法算法及其Verilog实现 - 固定系数h

    变量x与固定系数h二补数乘积算法及其Verilog实现(signed 2'scomplement) 一.二补数乘法算法 我们设计有符号乘法器时会遇到一个问题,负数二进制数不能直接移位相乘再相加,这样做 ...

  2. 科普文章-另一个视角解读计算机编码(修订版)【一个吊丝的个人理解】

    本文引用文章地址 科普文章-另一个视角解读计算机编码(修订版)_dog250的博客-CSDN博客https://blog.csdn.net/dog250/article/details/7338187 ...

  3. 坚持完成这套学习手册,你就可以去 Google 面试了

    from: http://geek.csdn.net/news/detail/107064 本文为掘金投稿,译文出自:掘金翻译计划 原文地址:Google Interview University 原 ...

  4. 补码、无符号数减法运算

    1. 补码 Two's Complement(二补数.补码)是对二进制数的数学运算,运算过程为:对二进制序列每一位取反(0->1; 1->0),再加1. bits 取反 补码 011 10 ...

  5. 位运算的奇技淫巧:Bit Twiddling Hacks

    原文名:Bit Twiddling Hacks 原文地址:http://graphics.stanford.edu/~seander/bithacks.html 作者:Sean Eron Anders ...

  6. Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了

    作者:Glowin 链接:https://zhuanlan.zhihu.com/p/22881223 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文地址:Goo ...

  7. 【CSAPP】计算机系统知识点(新国立NUS课程,中文版)

    文章目录 1. 数值系统 `Number System` 1.1 数据表示方式 `Data Representation` 1.2 十进制数值系统 `Decimal (base 10) ` 1.3 其 ...

  8. LeetCode-Convert_a_Number_to_Hexadecimal

    题目: Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two's c ...

  9. [译] Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试

    [译] Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试 十一七天乐,看池博的github,发现这个markdown,转过来mark一下 原 ...

  10. Google Interview University | 坚持完成这套学习手册,你就可以去 Google 面试了

    Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试 原文地址:Google Interview University 原文作者:John Wa ...

最新文章

  1. 【Python-ML】SKlearn库多项式回归
  2. (OPC Client .NET 开发类库)网上很多网友都有提过,.NET开发OPC Client不外乎下面三种方法...
  3. Linux学习之四——磁盘与文件系统管理
  4. 伊恩斯普里格斯3D肖像的秘密
  5. sim7020c功耗_SIM7020C物联网NB-IOT模块 simcom代理
  6. c语言中因式分解的题目,因式分解相关练习题
  7. C语言细节之四: 空指针
  8. VMware网络设置
  9. Android之SwipeRefreshLayout下拉刷新组件
  10. enfp工具箱怎么用_小丸工具箱使用技巧详细图解,值得各位学习
  11. 半部秘籍--分类、回归、集成与无监督
  12. 团队项目(二)(江山代有才人秃队)
  13. 箱形图适用于哪种数据_数据可视化分析中图表选择
  14. 如何获取美团饿了么的推广链接赚钱
  15. Leetcode打卡四:将给定的单链表L: L 0→L 1→…→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→… 要求使用原地算法,并且不改变节点的
  16. Luajit作者给的Lua源码的阅读顺序
  17. java的“看门狗”锁续期可以用php redis这样实现【php锁续期、分布式锁、无锁请求队列超卖】解决【商家超卖(商品库存控制)、用户超买(秒杀订单控制)】问题。非demo 线上一直在用
  18. Cool Edit Pro 常用快捷键
  19. pci总线定时协议_PCI总线标准协议(中文版)
  20. Android通讯录模糊匹配搜索实现 号码 首字母 简拼 全拼

热门文章

  1. win10 u盘 修复计算机,怎么用u盘修复windows10专业版系统
  2. CSS解决图片过大撑破DIV的方法
  3. OpenXml 之 Excel 复制插入行
  4. RFBNet模型推理
  5. c 语言 农历,C++算法系列之中国农历的算法
  6. 信息搜集工具:Maltego
  7. 计算机去掉everyone访问权限,Win7提示您需要Everyone提供的权限才能对此文件进行更改的解决方法...
  8. mkv导入Pr没有音频,mkv无法导入的解决方法
  9. Oracle 同义词详解(synonym)
  10. 树莓派介绍以及FAQ【这是我见过最全的树莓派教程】