栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言位运算

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言位运算

位运算

& 特定位清0

|特定位置1

~ 特定位取反

^(位异或) 相异就是1

int main

{

int a = 45;

int b = ~a;

printf("%dn", b);

}

b=-46

int main

{

unsigned int a = 45;

unsigned int b = ~a;

printf("%un", b);

}

b=4294967250

寄存器操作原则:不影响其他位-通过读改写

特定位设置

bit3~bit7设置位1(0x1F<<3)(0b11111<<3)

bit4~bit10设置为1(0xF<<0)|(0xfffff8<<11)

或者先构造bit4~bit10设置为0,然后按位取反~(0x7f<<4)

设置a的bit3

a |= (1<<3);

清除a的bit15 a&=(~(1<<15))

读取:取出bit3~bit8

第一步先将bit3~bit8不变,其他全部清0,第二步右移3位

a&=(0x3F<<3)

a>>=a3

赋值:给bit7~bitbit17赋值937(写入要先清0,再写入)

第一步先将bit7~bit17清0,再将937写入bit7~bit17

a&=~(0x3FF<<7) //清0

a|=(937<<7) //写入

读改写:给bit7~bit17加17

第一步:先读出来,int tmp =a&(3F<<7); tmp>>=7;

第二步,加17 tmp+=17;

第三步,给bit7~bit17清0 a&=~(0x3F<<7)

第四步,将第二步的数写入bit7~bit17 a|=tmp<<7;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955155.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号