输出结果是:2,16,-6,13,为什么不是1,1,0,0
#include<stdio.h>
#include<conio.h>
int main()
{
int x=5,y=8;
int a=x>>1;
int b=y<<1;
int c=~x;
int d=x^y;
printf("%d,%d,%d,%d\n",a,b,c,d);
getch();
return 0;
}
用8位补码表示第改拦逗一位符号衡帆位
5 00000101 右移 00000010 2(整数)
8 00001000 左移 00010000 16
5 00000101 取反 11111010 -6
x异核卖或y 00001101 13
>>相当于处2.>>相当于乘2.~取反,要写做源出他的二进制形式,将0,1互换,再换为十销胡正进制。^我亏悔也不了解
格式printf控制的%d,十进制;程序将a,b,c,d强制转化脊慎为十进制。其他的右移,左移,取反,樱慧敬异或都是位运算,化成二进制数计算。这是说给你听的,也是说给自己听的,,碧拿,我也是初学者,如果不对,请原谅。