给定一个整形a, 给两段代码,给a的bit = 3时赋值,然后给a的bit=3位清零,
同时要保证其他位不变
#include <stdio.h>
#include <iostream>
using namespace std;
#define BIT3 (0x1 << 3)
static int a=5;
void set_bit3(void)
{
a |= BIT3;//位逻辑或
}
/************************************************************************/
/* 11
~10表示10对应的二进制按位取反,取反后刚好是-11的补码。
在计算机中,整数一般用16位或者32位二进制表示,假设用16位,10 在计算机中的表示就是:
0000 0000 0000 1010
按位取反就是
1111 1111 1111 0101 ---->这个就是-11的补码。
~是按位取反操作符,操作步骤:
一、10装换为而二进制 [00001010]
二、每一位取反,0变换为1,1变换为0得 [11110101]
*/
/************************************************************************/
void clear_bit3(void)
{
printf("%d\n",BIT3);
a= ~BIT3;
printf("%d\n",a);
a &= ~BIT3;//~ 取反,&位逻辑与
}
int main()
{
set_bit3();
printf("%d\n", a);
clear_bit3();
printf("%d\n", a);
return 0;
}
用<<、>>、|、&实现一个WORD(ABCD)的高低位交换(unsigned short a=0xABCD;变为CDAB)
#include <stdio.h>
int main(){
unsigned short a=0xABCD;
unsigned short b;
unsigned short c, d;
b=(a<<8)&0xff00;
c=(a>>8)&0x00ff;
d=b|c;
printf("%#X \n", b);
printf("%#X \n", c);
printf("%#X \n", d);
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。