一个程序的小问题,希望得到解答~

Lirael_C 2008-07-19 07:02:29
#include <iostream>
using namespace std;

int main()
{
int a = -1;
int d=1;
int c=2;
cout << "~d=" << ~d << endl;
cout << "~c=" << ~c << endl;
cout << "~a=" << ~a << endl;
cout << "a=" << a << endl;
bool b;
b = true;
cout << "b=" << b << endl;
cout << "!b=" << !b << endl;
}


输出后:
~a=0
~d=-2
~c=-3

这是为什么,搞不懂
...全文
50 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaxinzi 2008-07-19
  • 打赏
  • 举报
回复
输出后:
~d=-2
~c=-3
~a=0
a=-1
b=1
!b=0
首先,你用的int 类型去定义的a,b,c;
默认为signed int,即有符号整数类型;

程序中你用的~符号对数的各位取反,数值是用补码表示的。

详细情况参阅“计算机中补码表示法”。

Lirael_C 2008-07-19
  • 打赏
  • 举报
回复
谢谢~,很想给你分。。。但是给不了。。。

希望自己明天就有分了,呵呵
returnnofalse 2008-07-19
  • 打赏
  • 举报
回复
位运算

-1 是的二进制表示是 1111111111~11,取反后就是 0000000000000了
所以就是成了0
其它的也同理
Lirael_C 2008-07-19
  • 打赏
  • 举报
回复
显示自己有200可用分,但是在发贴的时候发现不能给,不知道为什么

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧