实例十:n的相反数
方法:result=(~n)+1
正数 负数
原数 0000 0011 1111 1111
补码 1111 1100 0000 0010
加一 1111 1011 0000 0011
1、正数
对于正数的相反数来说,补码就是除符号位变为1,其他不变,计算机中 对于一个数字来说存储的都是其补码,负数的补码为符号位不变其他位按位取反,然后将得到的结果+1
而~n+1的过程第一步就是将符号为变为1,变为其相反数原码的情况,然后剩下的过程就是相反数求补码的过程。
2、负数
对于一个负数来说,计算机中存储的是其补码,而补码的补码是原码,
而~n+1就是先将负数的补码,变成原码,这个时候在将符号位变为0的过程
总之:
1、对于正数:先改变其符号位,然后在进行补码转换
2、对于负数:先进行补码转换,然后在改变符号位
代码:
int _tmain(int argc, _TCHAR* argv[])
{
int n,nResult=0;
cout << "请输入原始的值:";
cin >> n;
nResult = (~n)+1;
cout <<endl<< "结果为:" << nResult;
system("pause");
return 0;
};