判断一个字节一位是否为0,怎么做?

hurry281 2008-08-05 09:03:09
int num = 0;
unsigned char a = 255;
if( (a & 1) != 1)
++num;
if((a & 2) != 1)
++num;
if(a & 4 != 1)
++num;
if(a & 8 != 1)
++num;
if(a & 16 != 1)
++num;
if(a & 32 != 1)
++num;
if(a & 64 != 1)
++num;
if(a & 128 != 1)
++num;
如上,我用这个判断每位是否为1,出错,为什么啊,该怎么做
...全文
786 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lv_zxy 2008-08-05
  • 打赏
  • 举报
回复
5楼还差个头文件吧bitset.h
ykx_yeer 2008-08-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 expter 的回复:]
(num & 1 < <n)
[/Quote]

正解!
iBug168 2008-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 expter 的回复:]
JF
[/Quote]
wangdeqie 2008-08-05
  • 打赏
  • 举报
回复
哥们,你这一个个写,也太那啥了,要是2048的话。。。。。
wangdeqie 2008-08-05
  • 打赏
  • 举报
回复
晕,连击了,学校的网络太差了,唉!
wangdeqie 2008-08-05
  • 打赏
  • 举报
回复

//这么写
#include<iostream>
using namespace std;
void main()
{
int n,i,j=0;
int a[1000];
cout<<"输入一个数字:"<<endl;
cin>>n;
i=n;
while(i)
{
a[j]=i%2;
i/=2;
j++;

}
for(i=j-1;i>=0;i--)
cout<<a[i];
cout<<"转为二进制为:"<<endl;
cout<<endl;

int pos;
cout<<"想判断的第几位(从0开始)"<<endl;
cin>>pos;
cout<<a[pos];
cout<<endl;
}
wangdeqie 2008-08-05
  • 打赏
  • 举报
回复

//这么写
#include<iostream>
using namespace std;
void main()
{
int n,i,j=0;
int a[1000];
cout<<"输入一个数字:"<<endl;
cin>>n;
i=n;
while(i)
{
a[j]=i%2;
i/=2;
j++;

}
for(i=j-1;i>=0;i--)
cout<<a[i];
cout<<"转为二进制为:"<<endl;
cout<<endl;

int pos;
cout<<"想判断的第几位(从0开始)"<<endl;
cin>>pos;
cout<<a[pos];
cout<<endl;
}
expter 2008-08-05
  • 打赏
  • 举报
回复
JF
expter 2008-08-05
  • 打赏
  • 举报
回复
(num & 1<<n)
hurry281 2008-08-05
  • 打赏
  • 举报
回复
不好意思,已经解决,呵呵,谁说下话

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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