ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

补码

2021-11-04 17:32:23  阅读:172  来源: 互联网

标签:表示 0000 符号 补码 负数 256


计算机采用二进制计数,有符号整数的表示、存储和计算就是一个要解决的问题;

在这个问题上,计算机设计者选择了补码表示法。


 

 在这之前,先看下另一种表示方法,符号及值表示法。

一个 n 位字可以表示从 0 ~ 2n-1 共 2n 个可能的值,如表 无符号数;表示负数的一种方法是用它的最高位表示符号,通常符号位为 0 表示正数,符号位为 1 表示负数;

有符号数的值可被表示为从 (-1)s×M,这里 s 为数的符号位的值,M 为其数值部分;则其表示范围为 -(2n-1-1) ~ +(2n-1-1),一个8位有符号数可以表示为 -127 ~ +127,如表 原码

但有个问题, 0000 0000 = +0、1000 0000 = -0,且算术运算中需要使用减法器;因此计算机设计者选择了只需要加法器就可以进行包含负数的运算,且能解决+0、-0问题的补码表示系统。


 

 补码表示法,涉及到补数和模的概念;

举例,8位字长,10 - 2 = 10 + (-2) = (10 + (256-2)) mod 256 = (10 + 254) mod 256 ;所以 -2 和 +254 效果是一样的,那么 -2 就可以用 1111 1110 来存储,用加法器算术运算。

这里猜测下为什么是 -128。256个数,正负各半,我们知道 0 既不是正数又不是负数,那么还剩 2 个数要怎么安排? 0000 0000、1000 0000;没说的,0000 0000 肯定表示 0

现在数的表示范围已经达到了 -127 ~ +127,1000 0000 最高位是1, 划分到负数里,只能是 -128;其实对模=256来说,-128 运算等价于 +128。


 

 取反+1

例如, -N 要存放到计算机,负数先进行求补运算,28 - N = 1 0000 00002 - N = 1 0000 00002 - 1 - N + 1 = 1111 11112 - N + 1

1111 11112 - N 很容易计算,非常简单,计算机易实现,这也是补码的魅力;


 


 

 


 

标签:表示,0000,符号,补码,负数,256
来源: https://www.cnblogs.com/damm/p/15508380.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有