二补数 (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可以直接轉換,比較容易出錯,但計算速度較快。
转载于:https://www.cnblogs.com/sleepy/archive/2011/07/10/2102528.html
二补数 (2's complement)相关推荐
- 二补数(2’scomplement)乘法算法及其Verilog实现 - 固定系数h
变量x与固定系数h二补数乘积算法及其Verilog实现(signed 2'scomplement) 一.二补数乘法算法 我们设计有符号乘法器时会遇到一个问题,负数二进制数不能直接移位相乘再相加,这样做 ...
- 科普文章-另一个视角解读计算机编码(修订版)【一个吊丝的个人理解】
本文引用文章地址 科普文章-另一个视角解读计算机编码(修订版)_dog250的博客-CSDN博客https://blog.csdn.net/dog250/article/details/7338187 ...
- 坚持完成这套学习手册,你就可以去 Google 面试了
from: http://geek.csdn.net/news/detail/107064 本文为掘金投稿,译文出自:掘金翻译计划 原文地址:Google Interview University 原 ...
- 补码、无符号数减法运算
1. 补码 Two's Complement(二补数.补码)是对二进制数的数学运算,运算过程为:对二进制序列每一位取反(0->1; 1->0),再加1. bits 取反 补码 011 10 ...
- 位运算的奇技淫巧:Bit Twiddling Hacks
原文名:Bit Twiddling Hacks 原文地址:http://graphics.stanford.edu/~seander/bithacks.html 作者:Sean Eron Anders ...
- Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了
作者:Glowin 链接:https://zhuanlan.zhihu.com/p/22881223 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文地址:Goo ...
- 【CSAPP】计算机系统知识点(新国立NUS课程,中文版)
文章目录 1. 数值系统 `Number System` 1.1 数据表示方式 `Data Representation` 1.2 十进制数值系统 `Decimal (base 10) ` 1.3 其 ...
- LeetCode-Convert_a_Number_to_Hexadecimal
题目: Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two's c ...
- [译] Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试
[译] Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试 十一七天乐,看池博的github,发现这个markdown,转过来mark一下 原 ...
- Google Interview University | 坚持完成这套学习手册,你就可以去 Google 面试了
Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试 原文地址:Google Interview University 原文作者:John Wa ...
最新文章
- 【Python-ML】SKlearn库多项式回归
- (OPC Client .NET 开发类库)网上很多网友都有提过,.NET开发OPC Client不外乎下面三种方法...
- Linux学习之四——磁盘与文件系统管理
- 伊恩斯普里格斯3D肖像的秘密
- sim7020c功耗_SIM7020C物联网NB-IOT模块 simcom代理
- c语言中因式分解的题目,因式分解相关练习题
- C语言细节之四: 空指针
- VMware网络设置
- Android之SwipeRefreshLayout下拉刷新组件
- enfp工具箱怎么用_小丸工具箱使用技巧详细图解,值得各位学习
- 半部秘籍--分类、回归、集成与无监督
- 团队项目(二)(江山代有才人秃队)
- 箱形图适用于哪种数据_数据可视化分析中图表选择
- 如何获取美团饿了么的推广链接赚钱
- 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→… 要求使用原地算法,并且不改变节点的
- Luajit作者给的Lua源码的阅读顺序
- java的“看门狗”锁续期可以用php redis这样实现【php锁续期、分布式锁、无锁请求队列超卖】解决【商家超卖(商品库存控制)、用户超买(秒杀订单控制)】问题。非demo 线上一直在用
- Cool Edit Pro 常用快捷键
- pci总线定时协议_PCI总线标准协议(中文版)
- Android通讯录模糊匹配搜索实现 号码 首字母 简拼 全拼
热门文章
- win10 u盘 修复计算机,怎么用u盘修复windows10专业版系统
- CSS解决图片过大撑破DIV的方法
- OpenXml 之 Excel 复制插入行
- RFBNet模型推理
- c 语言 农历,C++算法系列之中国农历的算法
- 信息搜集工具:Maltego
- 计算机去掉everyone访问权限,Win7提示您需要Everyone提供的权限才能对此文件进行更改的解决方法...
- mkv导入Pr没有音频,mkv无法导入的解决方法
- Oracle 同义词详解(synonym)
- 树莓派介绍以及FAQ【这是我见过最全的树莓派教程】