解题思路:正数取反是先将初始数值转换成二进制数(6==》00000110),再对二进制数的每一位取反:即将0变为1、将1变为0。(00000110==》11111001),得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果;负数取反是先将初始数值转换成二进制数(以-6为例,10000110),再取得二进制数的补码,之后对补码的每一位取反:即将0变为1、将1变为0。得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果。
C语言源代码演示:
学习使用按位取反~。
#include<stdio.h>//头文件
int main()//主函数
{
int num1,num2;//定义整型变量
num1=234;
num2=~num1;
printf("num2是:%d\n",num2);
num1=~num1;
printf("num1是:%x\n",num1);//注意此处的格式控制符是%x
return 0;//函数返回值为0
}
编译运行结果:
num2是:-235
num1是:ffffff15
--------------------------------
Process exited after 2.502 seconds with return value 0
请按任意键继续. . .