二补数 (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. html5简单游戏案例,HTML5存储(带一个粗糙的打怪小游戏案例)
  2. Facebook 开源了一整套重要的 Linux 内核组件与工具!
  3. Python 下的 tcp server/client 通信
  4. C# 10 新特性 —— CallerArgumentExpression
  5. python断点续传下载_python requests 断点续传下载
  6. speak 计算机英语作文,跪求一篇英语作文 题目:论计算机的优缺点
  7. 计算机控制技术数据存储器有,计算机控制技术复习资料.doc
  8. 高质量程序设计指南C++/C试题
  9. 你的新电脑会预装什么软件?这些才是你装机必备的全家桶!
  10. 简述人工智能的应用领域
  11. 图片识别——均值哈希算法
  12. 光纤布拉格光栅(FBG)笔记【2】:反射率
  13. SQLyog设置唯一
  14. 共享充电语音提醒功能如何实现?
  15. JAVA SE之面向对象12:集合3(Set)
  16. std list/vector sort 排序就这么简单
  17. Linux lds 文件格式分析(一)
  18. 苹果删除照片不释放内存_删除的照片怎么找回?高效找回不耽误!
  19. Git暂存区的意义或git add的意义
  20. 18个网站的Python爬虫登录示例 | 开源项目推荐

热门文章

  1. vue3+vant Failed to resolve import “E:/code3/jianmu-user-yd/node_modules/vant/lib/vant/es/icon/style
  2. 柏拉图式爱情 (精神爱情)
  3. java se 64位_【JavaSERuntime(jre864位版)免费版下载】Java SE Runtime(jre8 64位版) 8.0-ZOL软件下载...
  4. android svg 线条动画教程,【Web动画】SVG 实现复杂线条动画
  5. css重复,CSS小课堂之可重复渐变
  6. 思考怎么成为一名合格的技术总监?
  7. 〖小狼毫〗小狼毫使用心得分享
  8. MLX90640 红外热成像仪测温模块开发笔记(完整版)
  9. 基于PLC的锅炉控制,基于s7-200的锅炉压力控制的设计,基于西门子S7-200plc与MCGS锅炉压力PID控制系统设计
  10. 差分约束系统(例题:ccf-再卖菜)