原文:位运算之x&(-x)

因为树状数组要用,所以学习到了。 因为解释的太好了,我直接copy: 这里利用的负数的存储特性,负数是以补码存储的,对于整数运算 x amp x 有 当x为 时,即 amp ,结果为 当x为奇数时,最后一个比特位为 ,取反加 没有进位,故x和 x除最后一位外前面的位正好相反,按位与结果为 。结果为 。 当x为偶数,且为 的m次方时,x的二进制表示中只有一位是 从右往左的第m 位 ,其右边有m位 , ...

2022-03-12 14:57 0 1153 推荐指数:

查看详情

如何理解x&(-x)和x&(x-1)

最近看算法题,涉及到两个很经典的运算x&(-x):保留二进制下最后出现的1的位置,其余位置置0(即一个数中最大的2的n次幂的因数 x&(x-1):消除二进制下最后出现1的位置,其余保持不变 具体分析如下:   我们可以从看待字符串的角度去思 ...

Fri Apr 10 00:59:00 CST 2020 1 3161
0x01 运算

0x01 运算 定义 bit是度量信息的单位,包含\(0\)和\(1\)两个汇总状态,这种操作的速度很快!!! 首先来定义一下算术运算 与:\(and,\&\) 或:\(or,|\) 非:\(not,~\) 异或:\(xor,ˆ\) (\(ˆ\)这个符号通常不实用) 移位运算 ...

Mon Apr 27 22:43:00 CST 2020 0 872
树状数组lowbit()函数原理的解释 x&(x^(x-1)) x&-x

树状数组lowbit()函数所求的就是最低位1的位置所以可以通过位运算来计算 树状数组通过 x&(x^(x-1)) 能够成功求出lowbit的原因: 首先设x=6,即110(2) 于是我们使 x-1=101 可以发现,当我们将一个二进制数减一时,从最低位一(即lowbit)开始向后 ...

Sun Jul 16 17:30:00 CST 2017 3 5482
用Java计算x的y次幂x^y以及运算计算2^n

简介 我们知道 \(x^y\) 表示 x的y次幂。特殊地,\(2^n\) 表示 2的n次方,或者叫 2的n次幂。 1.计算 x 的 y次幂 易踩坑1:x ^ y × 之前,在刷算法题时,需要计算 x的y次幂的结果。我们经常用 x^y 在计算机上书面的表示公式 \(x^y\)。于是,我掉进 ...

Thu Jun 03 03:52:00 CST 2021 1 3927
幂的运算X的n次幂

计算X的n次幂,有多种算法 例子:计算2的62次方。 method 1 :time = 1527 纳秒。 常规思路,进行61次的乘法! private static long mi(long X, long n) { long start = System.nanoTime ...

Mon Dec 03 05:17:00 CST 2018 0 937
CRC(16)多项式为 X16+X15+X2+1

其对应校验二进制位列为1 1000 0000 0000 0101,可这有17啊,我怎么和16信息进行异或啊?是不是不要最高位的1 你没有弄明白crc的意思.这17后面再添上16个零,然后开始抑或运算.共33.从前到后运算,一来:当这一数值是1的时候就取这一开始往后的16 ...

Tue Jun 14 18:31:00 CST 2016 0 2248
centos 6.x 64 运行32程序

缘由:使用luajit的程序编译为32,在64系统上执行安装如下:基础依赖 yum install glibc.i686可能的libstdc++依赖 yum install libstdc++.i686 若报版本不一致,请依次执行 yum install ...

Thu Mar 21 20:33:00 CST 2019 0 668
x = x &(x-1)

判断一个数(x)的二进制含有几个1 假定x = 9999。 答案:8 思路:将x转化为2进制,看含有的1的个数。 判断一个数(x)是否是2的n次方 注: (1) 如果一个数是2的n次方,那么这个数用二进制表示时其最高位为1,其余 ...

Fri Nov 16 01:41:00 CST 2018 0 776
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM