练习:
1.给定一个整型数a,设置a的bit3(为1),保证其他位不变。
2.给定一个整形数a,设置a的bit3~bit7,保持其他位不变。
3.给定一个整型数a,清除a的bit15,保证其他位不变。
4.给定一个整形数a,清除a的bit15~bit23,保持其他位不变。
5.给定一个整形数a,取出a的bit3~bit8。
6.用C语言给一个整形数的bit7~bit17赋值937(其余位不受影响)。
7.用C语言将一个整形数的bit7~bit17中的值加17(其余位不受影响)。
8.用C语言给一个整形数的bit7~bit17赋值937,同时给bit21~bit25赋值17.
第一题:
#include<stdio.h>
int main(void)
{
int a = 0x12345678;
a = (a | (0x1 << 3));
printf("0x%x",a);
}
运行结果:0x12345678
8表示为二进制是 1000
1是它的第三位
1 | 1 = 1
第二题:
#include<stdio.h>
int main(void)
{
int a = 0x12345678; //给一个整数十六进制12345678
a = a | (0b11111<<3); //将3到7位的数值设定为1
printf("0x%x",a);
}
运行结果:0x123456f8
3到7位本来是01111
11111 | 01111 = 11111
f代表十六进制的15
第三题:
#include<stdio.h>