练习
//1.给定一个整型数a,设置a的bit3(为1),保证其他位不变。
创建test1.c文件
#include <stdio.h>
int main(void)
{
int a = 0b11100101;
//当bit3变为1:0b1110 1101 十六进制表示:0xED
a |= 1 << 3;
printf("a = 0x%X \n",a);
return 0;
}
//2.给定一个整形数a,设置a的bit3~bit7,保持其他位不变。
创建一个test2.c文件
#include <stdio.h>
int main(void)
{
int a = 0b10110101;
//0b1111 1000
//设置成功a:11111101 十六进制:0xFD
a |= 0xf8;
printf("a = 0x%X \n",a);
return 0;
}
//3.给定一个整型数a,清除a的bit15,保证其他位不变。
#include <stdio.h>
int main(void)
{
int a = 0xEFF8;
//0b1110 1111 1111 1000
//0b0110 1111 1111 1000
//0x6FF8
a &= ~(1 << 15);
printf("a = 0x%X \n",a);
return 0;
}
//4.给定一个整形数a,清除a的bit15~bit23,保持其他位不变。
创建一个test4.c文件
#include <stdio.h>
int main(void)
{
int a = 0xABCD1234;
//0b1010 1011 1100 1101 0001 0010 0011 0100
//0b1010 1011 0000 0000 0001 0010 0011 0100
//0xAB001234
a &= ~(0x1FF << 15);
printf("a = 0x%X \n",a);
return 0;
}
//5.给定一个整形数a,取出a的bit3~bit8。
创建一个test5.c文件
#include <stdio.h>
int main(void)
{
int a = 0xB7C;
//a = ob1011 0111 1100
//R = 0b0001 0111 1000
//R = 0x178
a &= 0x1f8;
printf("Result = 0x%x \n",a);
return 0;
}
//6.用C语言给一个整形数的bit7~bit17赋值937(其余位不受影响)。
创建一个test.6文件
#include <stdio.h>
int main(void)
{
int a = 0x7A73B;
//a = ob0111 1010 0111 0011 1011
//937=0b0001 1101 0100 1
//R = 0b0101 1101 0100 1011 1011
//%x= %x5D4BB
//0011 1111 1111 1000 0000
a &= ~(0b11111111111 << 7);
a |= 937 << 7;
printf("a = 0x%X \n",a);
return 0;
}
//7.用C语言将一个整形数的bit7~bit17中的值加17(其余位不受影响)。
#include <stdio.h>
int main(void)
{
int a = 0x7A73B;
//a = 0b0111 1010 0111 0011 1011
//17 = 000 1000 1
//R = 0b0111 1010 1111 1011 1011
//0x= 0x7AFBB
a += 0b10001 << 7;
printf("R = 0x%X \n",a);
return 0;
}
//8.用C语言给一个整形数的bit7~bit17赋值937,同时给bit21~bit25赋值17.
创建一个test8.c文件
#include <stdio.h>
int main(void)
{
int a = 0x7A73B;
a &= ~(0b11111111111 << 7);
a |= 937 << 7;
//a = ob0111 1010 0111 0011 1011
//937=0b0001 1101 0100 1
//R = 0b0101 1101 0100 1011 1011
//%x= %x5D4BB
//00 0000 0101 1101 0100 1011 1011//赋值937
//10 0010 0101 1101 0100 1011 1011//赋值17
//%x= %x225D4BB
a &= ~(0b11111 << 21);
a |= 17 << 21;
printf("Resilt = 0x%X \n",a);
return 0;
}