c++的运算符问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:41:31
#include <iostream.h>
void main()
{
int k=0;
k=~k;
cout<<k;

}
请问为什么结果是-1,而不是1??
当k=1结果是-1,而不是0;
上面错了,当k=1结果是-2,而不是0

当k=1时,二进制为00000001,取反为11111110,最高位是1,是负数,就是-2
,计算方法11111110不及最高位,取反再加1,10000001+1=100000010=-2 (纸上计算)

你没有把计算机数据类型搞清楚!

int类型占四个字节 每个字节又占8个bit 而一个bit才是所谓的 0或1呢

所以你所谓的int k=1;和bit的1那是完全不同的两个概念 当然不是0了

计算机内部是用的二进制补码存储,0是00000000,反码就是111111111就是-1