objective-C和C --- 《位运算》的使用(一)
1 2 3 4 5 6 7 8 9 10 11 | int a= 1 << 0 // 向右偏移2的0次方,返回01 int b= 1 << 1 // 向右偏移2的1次方,返回10 int c= 1 << 2 // 向右偏移2的2次方,返回100 int d= 1 << 3 // 向右偏移2的3次方,返回1000 int value = a|b ; //表明value中包含a或者b //&表示包含 printf( @"%d%d%d%d" ,value&a,value&b,value&c,value&d) //打印结果:1 2 0 0,如果返回原来的数值则表示包含,返回0表示不包含,因为value为1111(a+b),0011 与 01 ->(0001,注:1与1才为1,否则都为0),0011 与 10 ->(0010,注:1与1才为1,否则都为0),上面两个都是返回自己本身,所以表示包含,再看看下面两个,0011与0100 ,返回 0000,0011与1000,返回 0000,所以下面两个都返回0,不包含 |
下面参与与运算
1 2 3 4 5 6 7 | // value 0011 value 0011 // a 0001 b 0010 //结果 0001 结果 0010 // value 0011 value 0011 // c 0100 d 1000 //结果 0000 结果 0000 |
测试代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | int a= 1 << 0; // 向右偏移2的0次方,返回01 int b= 1 << 1; // 向右偏移2的1次方,返回10 int c= 1 << 2; // 向右偏移2的2次方,返回100 int d= 1 << 3; // 向右偏移2的3次方,返回1000 void test( int value); void main(){ int value = a|b ; //表明value中包含a或者b test(value); } void test( int value){ if (value & a) printf( "value包含了a\n" ); if (value & b) printf( "value包含了b\n" ); if (value & c) printf( "value包含了c\n" ); if (value & d) printf( "value包含了d\n" ); } |
1 | 得出结论,之后如果使用枚举时,如果返回多个值可以用位运算来实现,否则只能返回一个数值 |
将来的自己,会感谢现在不放弃的自己!
标签:
iOS基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现