VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 970|回复: 6

如何取得unsigned long任意一位

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-2 11:00:01 | 显示全部楼层 |阅读模式
给定参数m,0<=m<=23
如何取得unsigned long任意m位,是0还是1
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-12 16:30:01 | 显示全部楼层
比如取M位
  unsigned long x=122;
  x>>(m-1)
  x&&000000000000000000000001
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-12 18:15:02 | 显示全部楼层
循环右移>>,末位与1即可
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-14 08:00:01 | 显示全部楼层
或者定义一个联合
union
{
int i;
IntBit0:1
IntBit1:1
...
IntBit31:1
}
然后就能取得了。
回复

使用道具 举报

0

主题

18

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-5-14 09:15:01 | 显示全部楼层
for(i=0;i<32;i++)
  temp = (m >>i) & 0x00000001;
回复

使用道具 举报

0

主题

25

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-5-14 12:30:01 | 显示全部楼层
樓上說得不錯.
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-20 09:00:01 | 显示全部楼层
呵呵,不是这样吗

unsigned long x;
x & (1 << m)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表