恭喜,你发布的帖子
发布于 2022-11-28 16:29:14
10楼
计数+1
1010-1=1001;1010 & 1001 =1000;
<>0 计数+1
1000-1=0111; 1000 & 0111=0; 结果为0 输出 2
原理是:-1只会影响最后不为零的位。
比FOR全判断要快。效率高
例如:0011 0000-1=0010 1111 &之后 为0010 0000;
理解了很久,-1就是向是1的位借1。
如果最后位是1,那么借完后,位为0。如果最后位为0,向左侧最近的是1的位借1,借完后这个位变成0。与运算的目的是将 借位后的位清0,然后继续下一次借位。
那么这个方法能不能再扩展一下,问题改成 任意一个数 求个位、百位、千位、万位......不是0的数有几个?
或者再详细一点,是1的数 是2的数 是3的数 有几个? 能否也借鉴这个思路
请填写推广理由:
分享
只看
楼主