第十二章位运算第十二章位运算位运算是指进行二进制位的运算位运算是指进行二进制位的运算,,即对字节或字即对字节或字节内部的节内部的二进制位二进制位进行运算
计算机中是以计算机中是以补码形式补码形式存放数的存放数的
正数正数::原码原码,,反码反码,,补码相同补码相同
负数的补码负数的补码::符号位不变,数值位按位取反加符号位不变,数值位按位取反加11如如::+7+7::-7:-7:0000011111111001一
位运算符•参加位运算数据类型:有符号和无符号的整型数(包括:char、shortint、longunsigned)•位运算符共6种:&|^~1
~((按位取反运算符按位取反运算符))作用:对一个二进制数逐位取反
注意注意::~运算和
~的优先级与++、--、
结合性从右至左
如:a=15则~a例例12
1main()12
1main(){{inta=0,b=1;inta=0,b=1;printf(“%d,%d\n”,printf(“%d,%d\n”,~a~a,,~b~b););printf(“%d,%d\n”,printf(“%d,%d\n”,
b););}}运行结果运行结果::-1,-2-1,-21,01,000000000000011111111111111110000a~a000000000000000011111111111111110~0~02
&(按位与运算)作用:对参加运算的两个二进制数逐位进行逻辑与运算
如:a&b规则:0&0=0,1&0=0,0&1=0,1&1=1例如:a=1,b=-2,则:a&b=0例:main(){inta=5,b=12,d;d=a&b;printf(“%d&%d=%d\n”,a,b,d);}输出:5&12=4此例说明:a,b两个操作数参加&运算前后,其值不变