C语言某一个位置1、清0

一、前提

了解 |(或)、&(与)、<<(左移)、>>(右移)、~(取反)这个几个运算符的用法和概念。

|(或)运算符:有“1”为“1”

&(与)运算符:有“0”为“0”,全“1”为“1”

<<(左移)运算符:左移就是把一个数的所有位都向左移动若干位

>>(右移)运算符:右移就是把一个数的所有位都向右移动若干位

~(取反)运算符:通俗点讲就是“1”变成“0”,“0”变成“1”

 二、某一位置"1"

例子:char a=1, 他的二进制数就是0000 0010 把这个数的第二位置“1”,这个第二位是从右往左数且最右边为第零位,即0000 0010红色位置“1”

    代码表示:  a |= 1<<2;

解析:1<<2  二进制表示 0000 0100  ,左移一位后的二进制数0000 0100

这个0000 0100再和0000 0010相或;即0000 0100 | 0000 0010 = 0000 0110

结果0000 0110这样就完成置“1”.

三、某一位清"0"

此例以上述a=6为例,把第二位清“0”,二进制表示 0000 0110

    代码表示: a&= ~(1<<2);

解析: 1<<2二进制表示  0000 0100  ,左移一位后的二进制数0000 0100

0000 0100 取反得到 1111 1011

1111 1011再和0000 0110相与;即0000 0110&1111 1011 = 0000 0010

结果0000 0010这样就完成清“0”.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值