c语言——位运算符及用法

1;位运算;
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。(均以二进制的补码形式)
整数;及只能是带符号或者无符号的char,short,int,long类型;

2;c语言中的6种位运算符;
& 按位与——如果两个相应的二进制位都为1,则该位的结果值为1,否则为0;
| 按位或——两个相应的二进制位中只要有一个为1,该位的结果值为1;
^ 按位异或—— 若参加运算的两个二进制位值相同则为0,否则为1;
~ 取反 ——~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0;
<< 左移 用来将一个数的各二进制位全部左移N位,右补0;
;>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0;
这里写图片描述

3;运算符的应用;
3.1;按位与&;
3.1.1;清零;列如101010;清零就是与1000000进行&;即可;
3.1.2;保留指定位;及与一个指定位为1其余都为0的&即可;
3.2;按位或|;
3.3;按位异或^;
3.3.1;交换两个值,不用临时变量;

   a=a∧b;
    b=b∧a;
    a=a∧b;
a=011(2)
    (∧)b=100(2)
a=111(2)(a∧b的结果,a已变成7)
    (∧)b=100(2)
b=011(2)(b∧a的结果,b已变成3)
    (∧)a=111(2)
a=1002)(a∧b的结果,a已变成4)
//及实现了交换;

这里写图片描述

3.4;按位取反~;他是一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的1变为0,0变为1。

3.5;左移与右移;
左移<<是乘;但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。
右移>>是除;
8<<2 ——8乘以2的二次方;则等于32;
8>>2——8除以2的二次方;则等于2;
这里写图片描述

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值