二进制位移操作及按位取值方法

((Value shr (nIndex-1)) and 1)=1; 这个写法可以获取到字节的指定bit状态。是1还是0,
((VALUE >> (nIndex-1)) & 1)==1 C语言中应该是这样写的吧

Test1:

28,取第三位状态=1 
((28 shr (3-1)) and 1)=1 
28 二进制表示:00011100 
右移2位为7 二进制表示:0111 and 1 
1 二进制表示:0001 
0111 按位与 0001
0001
1=1 所以为真

Test2:

28取第6位=0 
数学计算公式: 
((28 shr (6-1)) and 1)=1 
28 二进制表示:00011100 
右移5位=0 
0000 0001 返回FALSE=0

Test3:

175 取第五位状态=0 
175 = 10101111 
((175 shr (5-1)) and 1)=1 
175右移四位=1010 
1010 0001 全部不匹配所以=0

Test4:

175取第8位=1 
((175 shr (8-1)) and 1)=1 
175右移7位=0001
0001 0001 =1 为真

Test5:

175取第1位=1 
((175 shr (1-1)) and 1)=1 
175右移0位= 10101111
10101111 00000001 =1 为真

Test6:

8 取第4位=1 
8=1000 
((8 shr (4-1)) and 1)=1 
8右移三位:0001 
0001 0001 =1

Test7:

8 取第3位=0 
8=1000 
((8 shr (3-1)) and 1)=1 
8右移二位:0010
相与全为0 0010 0001 =0

Test8:

1取第一位=1
1=0001
((1 shr (1-1)) and 1)=1
0001=0001=1

posted @   IT情深  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示