c语言的移位操作符及其使用
博主大一学校学了点c语言,当时学的很渣,大三打算复习下语法,做些练习,如下总结:
位移位运算符分为左移和右移两种,均为双目运算符。
右移(>>) :无符号数: 补0,带符号数:补符号位
左移( << ):无符号和带符号数都是补0
其原因是计算机底层是以二进制补码形式存储。
相关练习题:
1.给定一个整型数a,设置a的bit3(为1),保证其他位不变。
int a;
printf("请输入一个数字a:");
scanf("%d",&a);
char c[100];
itoa(a,c,2);
printf("原来数字a的二进制是\n%s\n",c);
int b=1;
b=b<<3;
a=a|b;
itoa(a,c,2);
printf("改变后a是\n%s\n",c);
运行结果:
2.给定一个整形数a,设置a的bit3~bit7(为1),保持其他位不变。
int a;
printf("请输入一个数字a:");
scanf("%d",&a);
char c[100];
itoa(a,c,2);
printf("原来数字a的二进制是\n%s\n",c);
int b=0x1f;
b=b<<3;
a=a|b;
itoa(a,c,2);
printf("改变后a是\n%s\n",c);
运行结果