https://blog.csdn.net/youyou362/article/details/72667951/

1. 十进制负数以其补码存储在内存上

例子:-8 在内存中表示为:1111 1111 1111 1111 1111 1111 1111 1000

验证:求-8在内存上以二进制形式1的个数

 int NumberOf1(int n)
{
int count = ;
unsigned int value = ;
while(value != )
{
if(value & n)
{
count++;
}
value = value << ;
}
return count;
} cout << NumberOf1(-) << endl; //

-8在内存上以二进制形式1的个数 = 29

解析:

-8 的原码: 1000 0000 0000 0000 0000 0000 0000 1000

-8 的反码: 1111 1111 1111 1111 1111 1111 1111 0111  (符号位不变,其余各位取反)

-8 的补码: 1111 1111 1111 1111 1111 1111 1111 1000  (补码 = 反码 + 1)

其中1的数量正好为29。

2. 十六进制负数以其原码存储在内存上

以上例:-8 的十六进制,在内存中表示 只有2 个1.

3. 二者都符合 符号位 + 序号位(不是值位!)的原则

1)对于16进制的 0x80000000:

原码:1000 0000 0000 0000 0000 0000 0000 0000

最高位:符号位 (-)

后31位:序号位,不是值位。000 0000 0000 0000 0000 0000 0000 0000, 表示序号0, 表示所有31位可表示的数中,从小到大的第0位。

int的最小值 $-2^{31}$, 0x80000000为这些数从小到大的第0位,所以

 int test_0x80000000 = 0x80000000;
cout << test_0x80000000 << endl; // -2147483648
cout << INT_MIN << endl; // -2147483648

2) 对于16进制的 0xFFFFFFFF:

原码:1111 1111 1111 1111 1111 1111 1111 1111

最高位:符号位 (-)

后31位:序号位。111 1111 1111 1111 1111 1111 1111 1111 = $2^{31} - 1$

所以 0xFFFFFFFF为负数从小到达的第2^31 - 1位,即 $-2^{31} + (2^{31} - 1) = -1$

 int test_0xFFFFFFFF = 0xFFFFFFFF;
cout << test_0xFFFFFFFF << endl; // -1

3) 对于10进制的 -8:

-8 的补码:1111 1111 1111 1111 1111 1111 1111 1000

最高位:符号位 (-)

后31位:111 1111 1111 1111 1111 1111 1111 1000 = $2^{31} - 8$

所以补码表示的值为:$-2^{31} + (2^{31} - 8) = -8$

以上验证了十进制补码和十六进制原码表示的数值均符合 符号位 + 序号位 的原则。

最新文章

  1. iOS中生成并导入基于Swift编程语言的Framework
  2. 人在江湖飘,哪能不挨刀。CENTOS之后,UBUNTU,FEDORA都要安装起来作测试啊
  3. Linux磁盘分区,目录树,文件系统的关系(转)
  4. ODBC操作数据库
  5. 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。
  6. Alpha冲刺No.8
  7. 如何用java实现一个p2p种子搜索(3)-dht协议实现
  8. transient和synchronized的使用
  9. SQL LCASE() 函数
  10. webconfig标签收集
  11. VMware网络问题
  12. NGINX 加载动态模块(NGINX 1.9.11开始增加加载动态模块支持)
  13. centos设置中文输入法无效的解决办法
  14. vue--http请求的封装--session
  15. Blob CLOB区别
  16. Windows 7 incorrectly reports &quot;No Internet Access&quot;
  17. Equinox P2 介绍(一)Getting Start
  18. 推荐一个 JavaScript 日期处理类库 Moment.js
  19. BZOJ2716:[Violet 3]天使玩偶——题解
  20. Educational Codeforces Round 43 (Rated for Div. 2) ABCDE

热门文章

  1. python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01
  2. 安装docker私有仓库
  3. redis 学习(12)-- redis 发布订阅
  4. node工具之pm2
  5. 关于redis的几件小事(七)redis缓存雪崩与穿透
  6. Linux下nouveau操作和GPU的操作,nouveau拯救
  7. Python多线程异步任务队列
  8. HttpClient 释放连接
  9. Redis简介,应用场景,优势
  10. Ext4文件系统修复