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);
运行结果:

本文介绍了C语言中移位操作符的使用,包括如何设置、清除和提取特定位,以及如何对位域进行赋值和加法操作。通过实例展示了如何影响整数的bit3~bit7、bit15、bit15~bit23、bit3~bit8,以及位域的赋值和加法运算,如给bit7~bit17赋值937并保持其他位不变,以及位域加17等操作。
最低0.47元/天 解锁文章
2871

被折叠的 条评论
为什么被折叠?



