关于lowbit

lowbit(i)的意思是将i转化成二进制数之后,只保留最低位的1及其后面的0,截断前面的内容,然后再转成10进制数。即lowbit(i) = i&(-i)。
参数x为有符号整型数,-x通过求补码获得
比如,x=6,及二进制数0110,那么按照补码求法,-x的值为1001+1=1010
接着,x&-x,结果等于0010,作为函数的返回值
可见该函数的作用是:返回x的最后一个为“1”的bit位的位置。
将 x和-x 按位相与 后的返回结果,比如x=5 (二进制是00000101 -5就是11111011 按位相与后就是00000001,所以返回1
如果x=4 (00000100,-4 就是11111100,结果就是00000100,返回4
总的来说就是返回最低位的1的位置,所以函数名叫lowbit。
[单选题] 区间求和是在长度为n的数列A中,数列元素下标为1~n。计算q次第i与第j个元素之间的元素之和S,S中包含i与j两个端点位置,每次计算的i与j并不相同。以下说法错误的是 A 如果数列A中的数据是只读的,前缀和方法已经达到最高效率 B 如果要修改数列A中的某个数组,就需要重新计算前缀和,每次修改引起的计算量为n/2的级别 C 如果总共需要修改p次A中的元素,计算q次区间和,总的计算量是n+pn/2+q D 如果修改A中元素与区间求和交替进行,使用前缀和计算的效率优于用枚举方法计算 2.[单选题] 当n>0时,关于lowbit(n)值的说法,不正确的是 A n的二进制表示中只保留最右边一个1对应的数值 B 能够整除n的2的整数次幂的最大值 C 如果n中最右边的1是第k位,则lowbit(n)就是2的k的幂 D lowbit(n) = n & ~n 3.[单选题] 在BIT中,数组元素的位置与下标的位置关系描述错误的是 A 奇数下标元素是叶子结点 B 下标为2的整数次幂的结点的所有左侧结点构成一棵多叉子树 C 非2的整数次幂的偶数下标为根的子树不包含数组的左侧部分 D 非2的整数次幂的偶数下标为根的子树的结点在数组中并不连续 4.[单选题] 采用BIT实现区间求和,程序的时间效率为 A 乘积时间 B 线性时间 C 对数线性时间 D 对数时间 5.[多选题] 当区间求和问题中数列A的元素需要修改时,可以使用BIT算法提高计算效率。BIT A 形式上是一个数组,逻辑上有树的特征,称为“树状数组” B 逻辑上是一棵二叉树 C 逻辑上是一片多叉森林 D 是一个下标用二进制表示的数组
最新发布
06-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值