关于补码运算符

来源:3-6 运算符表达式和基本语句--位运算符

weixin_慕瓜2550733

2021-02-21

int A= 60
二进制表示为
0011 1100
cout<<~A<<endl;
之后为什么会变成-61了
二进制表示:1100 0011
如果最高位为符号位,1为负0为正
那么十进制的255 对应1111 1111不应该是负数吗?

写回答

1回答

quickzhao

2021-02-21

你得先明确一下是几个字节的表示。计算机int型一般32位,4字节:

60 是 0000 0000 0000 0000  0000 0000    0011 1100;

-61是 1111 1111 1111 1111  1111 1111   1100  0011;

255是 0000 0000 0000  0000  0000  0000 1111 1111 ;


0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程