C++操作符&用法
inlineintlowbit(intx){returnx&(-x);}这个函数什么意思?...
inline int lowbit(int x)
{
return x & (-x);
}
这个函数什么意思? 展开
{
return x & (-x);
}
这个函数什么意思? 展开
展开全部
inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int lowbit {
returnx&(-x);//返回x的二进制位的最后一位数是否为1;
}
returnx&(-x);//返回x的二进制位的最后一位数是否为1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
& 是位运算里的位与操作,运算规则为
0 & 0 = 0,
0 & 1 = 0,
1 & 0 = 0,
1 & 1 = 1。
我估计这个函数是找出整数的二进制里面是1的位的最小位置,比如12(00000000 00001100),得到的结果是第三位为1,即00000000 00000100。
分析如下,首先把二进制分成从低到高两部分,一部分为低位的0连带第一个1,第二部分为剩下的部分,上例的12分为地位的100和高位的00000000 00001。而-x为取x的相反数,因为数在一般的计算机中是用补码表示,相反数的取法是对二进制取反然后加1,即-12为11111111 11110011 + 1 = 11111111 11110100。这样的话先取反,低位部分变成0加若干个1(011),高位取反就是,然后加1,若干个1由于会进位,低位又会变为1加若干个0(011 + 1 = 100),高位依旧是反的,那么就可以看出,其实函数的结果和高位部分没有关系了,因为和原来的数高位部分位与操作之后高位全是0,原数低位部分的0在结果中也是0,只有那个1留到了最后
0 & 0 = 0,
0 & 1 = 0,
1 & 0 = 0,
1 & 1 = 1。
我估计这个函数是找出整数的二进制里面是1的位的最小位置,比如12(00000000 00001100),得到的结果是第三位为1,即00000000 00000100。
分析如下,首先把二进制分成从低到高两部分,一部分为低位的0连带第一个1,第二部分为剩下的部分,上例的12分为地位的100和高位的00000000 00001。而-x为取x的相反数,因为数在一般的计算机中是用补码表示,相反数的取法是对二进制取反然后加1,即-12为11111111 11110011 + 1 = 11111111 11110100。这样的话先取反,低位部分变成0加若干个1(011),高位取反就是,然后加1,若干个1由于会进位,低位又会变为1加若干个0(011 + 1 = 100),高位依旧是反的,那么就可以看出,其实函数的结果和高位部分没有关系了,因为和原来的数高位部分位与操作之后高位全是0,原数低位部分的0在结果中也是0,只有那个1留到了最后
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
&位与运算符
追问
那这个函数什么意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询