菜鸟是如何理解lowbit()运算的?

首先放上代码:

int lowbit(int x){
	return x&(-x)
}

这里用的知识有两点:与运算,pc存储是以补码的形式来存储数的。
补码:
----负数的补码是原码按位取反加一(符号位不变),正数的原码和补码是一样的。
----eg(假设是八位存储):-8的原码是10001000,反码是11110111,补码是11111000
lowbit(8)
----00001000&11111000=00001000=8
----注:此处只有8和-8是十进制数,其余数为二进制
lowbit的用处(暂时只发现下面的作用):
----如果一个数除了1之外没有其他奇数因子那么它进行lowbit()运算的值就等于它本身。
lowbit(x)求解的值:
----lowbit(x)计算的结果是2^k,其中k为x在二进制表示下末尾0的个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值