如何快速判断二进制数据第n位是否等于1?

sky3333ss 2010-05-24 10:59:10
如题,用& 和<< 判断的!最好讲详细点儿二进制怎么操作的!先谢过各位了!
...全文
622 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky3333ss 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mngzilin 的回复:]
C# code
int a = 18;//二进制10010
bool s=IsOne(a,2);//判断第二位是否为1
bool IsOne(int b,int pos)
{
return (b>>(pos-1) & 0x01)==1;
}
[/Quote]

大哥 我不知道你那个 0x01 是什么意思啊?
为什么要和 0x01 & 呢?
mngzilin 2010-05-26
  • 打赏
  • 举报
回复
int a = 18;//二进制10010
bool s=IsOne(a,2);//判断第二位是否为1
bool IsOne(int b,int pos)
{
return (b>>(pos-1) & 0x01)==1;
}
flythere 2010-05-24
  • 打赏
  • 举报
回复

Int32 n;
List<Int32> location = new List<int>();//存储从个位数开始为1的位数
Int32 bit = 0;//位数,从个位数开始

while (n != 0)
{
++bit;
//末位为1
if ((n & 1) == 1)
{
location.Add(bit);
}
n >>= 1;//右移,移除末位数
}
sky3333ss 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mngzilin 的回复:]
C# code
int a = 18;//二进制10010
int b = a>>1 & 0x01;//a右移1为是01001,和0x01(00001)求与运算是1,即右起第2位是1
[/Quote]

首先谢谢你的回答,但是我对这个二进制确实了解不多,麻烦你说详细点,
比如 判断18(10010)的第一位是否为0,最好写个通用的格式判断 。
mngzilin 2010-05-24
  • 打赏
  • 举报
回复
int a = 18;//二进制10010
int b = a>>1 & 0x01;//a右移1为是01001,和0x01(00001)求与运算是1,即右起第2位是1

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧