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 请问怎么写? 展开
A = 0;
A的地址目前 从左到右为 32个0
假设最右边的位置为 位置1
我现在想将位置5的值改写为1
并判断位置6是否为0 请问怎么写? 展开
4个回答
展开全部
用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还有很多函数,你可以自己去看看。
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对象。
展开全部
A=A|16; //把第5位置1 16的2进制是10000
if((A>>5)&1) //判断第6位是否为1,为1则(A>>5)&1为1,为0则(A>>5)&1为0
{
.............
}
if((A>>5)&1) //判断第6位是否为1,为1则(A>>5)&1为1,为0则(A>>5)&1为0
{
.............
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你两个思路
1,c++有一个类 bitset,这个类就是位操作用的
2,c++位运算符,< > & | 分别是右移,左移,按位与,按位或
1,c++有一个类 bitset,这个类就是位操作用的
2,c++位运算符,< > & | 分别是右移,左移,按位与,按位或
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int b ;
A=A|0x10; //将第五位写0 0x10=0b00010000;
b=A&0x20;//0x20=0b00100000;
if(b==0)
{
//第六位为0
}
A=A|0x10; //将第五位写0 0x10=0b00010000;
b=A&0x20;//0x20=0b00100000;
if(b==0)
{
//第六位为0
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询