c语言中位运算编码,C语言中的位运算

位运算

左移、右移<< >>  左移右补0,右移左补0;

取反~

异或^   ----相同为0,不同为1

位与&  ---------同1为1,同0为0,不同为0,(用于取位操作)

位或||   -------------同0,为0,,有1则1(置某位为1)

所有的位操作都是基于无符号类型的数据;[工作和笔试中没有负数,不需要按照补码或者是反码来求]

注意:

位操作也不是对变量的值直接操作啊,也就是说它是取a的值出来,算得上是a的一个备份,对备份进行操作;

a++是对值得直接操作,a=a+1;所以该变了变量的值;

对位的操作不改变原来的值;

#include

unsigned int quwei(unsigned int u,unsigned int wei);

int main()

{

unsigned char a=7;//00000111

//左移和右移的操作; 左移右补零,右移左补零;

printf("%u\n",a<<2);//28--11100

printf("%u\n",a<<1);//14--1110

printf("%d\n",a>>2);//1-- 1

printf("%u\n",a>>7);//0 0

printf("%d\n",a<<7);//896 11 1000 0000

//取反操作;

printf("%u\n",(unsigned char)~a);//11111000 按位0--1 1--0;

//异或运算;

printf("%d\n",a^8);//15 按位异或运算,在同一位上,相同为,不同为;

//与运算;

printf("%d\n",a&7);//7 按位与运算,全为则为.不同的为;

//或运算;

printf("%d\n",a | 7);// 7 按位或运算,全为零则为,否则为;

printf("%d\n",quwei(2345,12));

return 0;

}

unsigned int quwei(unsigned int u,unsigned int wei )

{

return (u >> (wei-1)) & 1; //取某一位的值;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值