1.将data中的第[7:4]位置1,保持其他位不变 【7:4】表示4-7位 说明:最右边位为第0位,用十六进制表示
//代码
#include<stdio.h>
int main(int argc, const char *argv[])
{
unsigned char data = 0x01, data2;
data2 = data | 0xf0; //将7-4位置一
printf("%#x\n", data2);
return 0;
}
//运行结果
yanxx@yzz-vm:~/c_program/day3$ gcc test5.c -o test5
yanxx@yzz-vm:~/c_program/day3$ ./test5
0xf1
2. 给定一个整形变量a,1)设置a的bit位3为1 ,2)将a的bit3置0
//代码
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a = 100; //XXXX 0110 0100
int ret1 = a | (0x01 << 3); //设置a的bit位3为1,108
int ret2 = a & ~(0x01 << 3); //设置a的bit为3为0,100
printf("%d\n" ,ret1);
printf("%d\n" ,ret2);
return 0;
}
//运行结果
yanxx@yzz-vm:~/c_program/day3$ ./test6
108
100
3.执行语句k=11>>1后,变量k的当前值
//代码
#include<stdio.h>
int main(int argc, const char *argv[])
{
int k = 11>>1; //1011--->0101 11-->5
printf("%d\n", k);
return 0;
}
//结果
yanxx@yzz-vm:~/c_program/day3$ ./test7
5
4.输入三个数,按照从大到小的顺序输出
//代码
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a, b, c, sum, max, mid, min;
printf("请输入三个数:");
scanf("%d %d %d", &a, &b, &c);
max = a > b ? a : b; //取ab中较大的数
max = max > c ? max : c; //取max和c中较大的数
min = a < b ? a : b; //取ab中较小的数
min = min < c ? min : c; //取min和c中较小的数
sum = a + b + c;
mid = sum - max - min;
printf("%d %d %d\n", max, mid, min);
return 0;
}
//运行结果
yanxx@yzz-vm:~/c_program/day3$ ./test8
请输入三个数:25 96 259
259 96 25
5.如何交换两个数的值
假设需要交换a和b的数据,只需引入另一个变量temp即可
temp = a;
a = b;
b = temp;