C++ 如何判断一个int数据的某一位是否为0

假设我声明一个32位的int型成员AA=0;A的地址目前从左到右为32个0假设最右边的位置为位置1我现在想将位置5的值改写为1并判断位置6是否为0请问怎么写?... 假设我声明一个32位的int型成员A
A = 0;
A的地址目前 从左到右为 32个0

假设最右边的位置为 位置1

我现在想将位置5的值改写为1
并判断位置6是否为0 请问怎么写?
展开
 我来答
nionydas
推荐于2017-11-26 · TA获得超过459个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:351万
展开全部
用C++里面的bitset 呀,你说的这些所有都能很轻松的实现!
bitset<32> A_bit; //声明A为32位 你这是如果知道初始值是0的话,就直接这样定义,所有位都为0了。
在bitset里面最右边的位置是从0开始,机器里就这么定义的,比如32位从高位到低位就是 31,30,29........0 这样的,你说的位置5,其实就是4了,改写为1的话直接调用函数
A_bit.set(4) ,判断6其实就是5是不是为0的话就是 A_bit.test(5) 这些函数返回1就代表真,返回0就代表假,bitset还有很多函数,你可以自己去看看。
追问
我获得了 数据库传过来的int型数值 
可以用bitset实现么

int数值不能动 已经在数据库中存好了 改他要改太多东西
追答
bitset用unsigned long来初始化,bitset bitvec2(0xffff);  比如这样初始化这个bitset对象。
lsslddd
2014-03-20 · TA获得超过936个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:425万
展开全部
A=A|16; //把第5位置1 16的2进制是10000

if((A>>5)&1) //判断第6位是否为1,为1则(A>>5)&1为1,为0则(A>>5)&1为0

{
.............
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友74d57df
2014-03-20 · TA获得超过2769个赞
知道大有可为答主
回答量:1043
采纳率:100%
帮助的人:1378万
展开全部
给你两个思路

1,c++有一个类 bitset,这个类就是位操作用的
2,c++位运算符,< > & | 分别是右移,左移,按位与,按位或
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c2602d6
2014-03-20 · 超过34用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:96.5万
展开全部
int b ;
A=A|0x10; //将第五位写0 0x10=0b00010000;
b=A&0x20;//0x20=0b00100000;
if(b==0)
{
//第六位为0

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式