C语言中的位运算

位运算

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

取反  ~

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

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

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


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

注意:

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

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

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

#include <stdio.h>
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;  //取某一位的值;
}


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值