位运算
修电缆的建筑工
以山为舷,以海为泉
展开
-
浅谈位运算
位运算是计算机的底层运算,让计算机来还做是相当快的。 那么随之而来的就是位运算的运算符,类似于逻辑门电路。取反对一个二进制数的每一位进行逻辑去反,符号为 ~。 eg. ~0111(十进制7) = 1000(十进制8)。但是如果这样写:printf("%d", ~7);则会得到-8。但是并没有任何问题。因为每个整数实数变量的第一个二进制位都是用来存符号的,代表...原创 2018-09-23 23:37:52 · 143 阅读 · 0 评论 -
位运算:64位整数的乘法
由于有对p取模的操作,就显然不是高精度算法,而且p的范围在long long以内。所以我们不妨试试位运算,并结合一下快速幂的思想。我们可以将b转成2进制数。eg. ∵11 =1011(2) = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 +1 * 2^0,∴2*11 = 2*(1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0) = 2*(2^3) +...原创 2018-09-23 23:55:14 · 566 阅读 · 0 评论 -
位运算:a^b
手写快速幂函数。 由于这里需要对p取模,而且p在int范围内,所以不需要高精度。所以就用位运算吧。这里仍然要用到二进制的思想,将b转为2进制来做。eg. ∵11 = 1011(2) = 1 * 2^3 + 0 * 2 ^2 + 1 * 2^1 + 1 * 2^0,∴2^11 = 2^(1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0) = 2...原创 2018-09-24 00:10:11 · 380 阅读 · 0 评论 -
位运算:最短Hamilton路径
描述给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行一个整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(一个不超过10^7的正整数,记为a[i,j])。对于任意的x,y,z,数据保证 a...原创 2018-11-18 21:51:13 · 578 阅读 · 1 评论 -
位运算:lowbit运算
位运算里有一种十分基础的运算:lowbit运算。 lowbit(n)定义为非负整数n在二进制表示下“最低为的1及其后边所有的0”构成的数值。例如n=10的二进制表示为(2)1010, 则lowbit(n)=2=(2)10。 ————摘自《算...原创 2018-11-22 22:03:26 · 1870 阅读 · 0 评论