1按位取反结果是多少?

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:54:17
要具体过程

先来说明一下:在计算机中存储的信息均是已二进制形式保存的。且数字是以补码形式保存的,正数的补码和原码同,负数的补码为原码取反后加1

下面举个简单的例子来说明:
如果用四位二进制位来表示,并且不要符号位的话,那么1表示为:0001取反后为1110即十进制中的14
如果用四位二进制位来表示,且最高位表示符号位,即只是低3位表示数值,此时1表示为0001取反后为1110,因为最高位为符号位,1即-,计算机中表示用补码,更具先前的说明,所以补码110对应的即十进制中的2,所以此时1取反后的数值对应的十进制数为-2

因为不同的环境中表示数值所用的二进制位数不同,故对应计算出的十进制数就可能不一样了。如果用三位数表示,1即001,无符号数取反即110即十进制中的6,有符号数取反即110即十进制中的-2
可以来验证一下:
#include "iostream"
using namespace std;
int main(){
cout<<~1<<endl;//数值1按位取反后输出对应的十进制数
return 0;
}
我用的是vc环境,整型好像是占用4个字节,有符号位,结果为-2

不知道这样解释你是否能够明白?
如果想深入的探究计算机中有关的存储细节,建议看看《组成原理》或《微机原理》或者《数学电子》、《汇编语言》之类的书籍,这些都有涉及这方面的内容,前面介绍的基础部分,一般讲解的都很细致的。

这个具体要看你存储用的字节数啊,
反正 就是最低位变0,其他高位变1就行了。

...按整形占2字节的话
00000000 00000001
11111111 11111110