ICode9

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

C语言中负数的存储

2021-11-20 09:32:47  阅读:109  来源: 互联网

标签:存储 0000 补码 负数 1111 128 C语言 原码 1000


计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理

  • 正整数的补码是其二进制表示,与原码相同;
  • 求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1;

示例:负数-1, (此处,假设是8位二进制表示)
对应正数的原码:0000 0001
取反: 1111 1110
加1  : 1111 1111
最终,-1是以1111 1111的形式进行存储的。

 

负数-127, (此处,假设是8位二进制表示)
对应正数的原码:0111 1111
取反: 1000 0000
加1  : 1000 0001
最终,-127是以1000 0001的形式进行存储的。

 

1)正数的原码、反码、补码相同。1byte容纳正整数的补码取值范围为:

0000 0000    (+0)

...

0111 1111   (+127)

2)1byte容纳负整数的补码取值范围为:

1000 0000   (-128)  这个比较特殊

...

1111 1111  (-1)

 

关于-128:

-1补码是1111 1111再减127,即 1000 0000 表示-128的补码

unsigned 

参考:

https://blog.csdn.net/u010603798/article/details/78962666 C语言中负数的存储

https://baike.baidu.com/item/%E8%A1%A5%E7%A0%81/6854613 补码

https://www.zhihu.com/question/28685048 补码10000000为什么可以表示-128?

https://zhidao.baidu.com/question/140643749696415725.html?qbl=relate_question_2  C语言-128的表示

标签:存储,0000,补码,负数,1111,128,C语言,原码,1000
来源: https://www.cnblogs.com/v5captain/p/15580146.html

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

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

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

ICode9版权所有