![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
独L无二
一位颇为清高的女程序媛
展开
-
常见位操作算法
获取第i位先将1左移i位,然后跟原来的求与运算,出去第i位,其余位都清0,最后如果原来第i位为1,则返回true,否则返回false.bool getBit(int num, int i){ return ((num & (1 << i)) != 0);}置位先将1左移i位,然后再与原来的数做或运算,那么就能确保第i位被设置为1,其余位的数值保持不变。int setBit(int num, int i){ return num | (1 &.原创 2020-09-23 15:07:59 · 259 阅读 · 0 评论 -
位操作原理
X^0 = X X&0 = 0 X|0 = X X^1 = ~X X&1 = X X|1 = 1 X^X = 0 X&X = X X|X = X原创 2020-09-23 14:56:32 · 203 阅读 · 0 评论 -
二进制 与、或、异或运算
原创 2019-07-31 11:59:30 · 47792 阅读 · 6 评论 -
负数在计算机中表示方法
我们已经知道计算机中,所有数据最终都是使用二进制数表达。我们也已经学会如何将一个10进制数如何转换为二进制数以及如何将如何将一个16进制数如何转换为二进制数,详见下图。image.png不过,我们仍然没有学习一个负数如何用二进制表达。比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:00000000 00000000 00000000 00000101...转载 2019-07-31 12:29:03 · 13005 阅读 · 1 评论 -
2的常用幂次方计算
原创 2019-05-24 17:07:42 · 5180 阅读 · 0 评论 -
二进制类型的面试题
把一个整数减去1之后再和原来的数做位与运算(即(n-1)& n),得到的运算结果相当于把整数的二进制表示中最右边的1变成0,很多二进制的问题都可以通过这种思路解决:求一个整数中二进制表示1的个数 判断一个整数是否是2的整数次方 输入另个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n...原创 2019-08-02 15:09:49 · 663 阅读 · 0 评论 -
二进制乘法运算
在回答本问题之前,先学习一些有关位运算的知识。(1) 常用的等式: -n=~(n-1)=~n+1(2) 获取整数n的二进制中最后一个1: n&~(n-1)或者n&(-n)。例如n=010100,则-n=101100,n&(-n)=000100。(3) 去掉整数n的二进制中最后一个1: n&(n-1)。例如n=010100,n-1=010011,则n&(n-1)=010000。注:对n为正数或者负数都适用。先看一个实例:1011*1010,因为二进制转载 2020-09-23 14:01:35 · 8607 阅读 · 0 评论