![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
基础算法---位运算
(xsj)
这个作者很懒,什么都没留下…
展开
-
acwing 85 不用加减乘除做加法
题面题解代码class Solution {public: int add(int num1, int num2){ while(num2){ int sum = num1 ^ num2; //不进位加法 int carry = (num1 & num2) << 1; num1 = sum; num2 = carry; }原创 2021-04-14 16:21:41 · 70 阅读 · 0 评论 -
剑指 offer acwing 26 二进制中1的个数 (位运算)
题面题解int 和 unsigned int 的转换int n = -2;//二进制表示不变,值得含义发生变换,如果是有符号,还表示-2,如果是无符号,表示一个很大的数unsigned int c = n; //4294967294int b = c; //-2二进制位运算//返回x的最后一位1int lowbit(int x) { return x & -x;}//求n的第k位数字(n是二进制数)n >> k & 1原创 2021-03-17 11:25:51 · 61 阅读 · 0 评论 -
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南) G Xor Transformation
题面题意给你一个x和y,最多通过5次,使得x = y ,每次 x = x ^ d (d>=0 && d <= x)题解x ^( x ^ d) = dd ^ ( d ^ y) = y所以我们只需要操作两次即可 ,第一次异或一个( x ^ d)得到 d , 第二次异或 一个 ( d ^ y)得到 y接下来就是求出一个 d ,使得 x ^ d 要小于等于 x 并且 d ^ y 要小于 d ,我们可以找和x(二进制)相同的位数全为1的数,那么异或之后一定小原创 2021-02-06 16:13:35 · 185 阅读 · 1 评论