位运算

本文详细介绍了位运算的概念,包括按位取反、补码运算、位运算在求解数学问题上的应用,如快速幂算法。同时讲解了位运算的成对变换特性,以及lowbit运算在树状数组中的作用。此外,还提到了二进制状态压缩在图论问题中的应用,并给出了求解最短Hamilton路径的优化策略。文章强调了位运算的优先级,并提醒在编程时注意括号的使用。
摘要由CSDN通过智能技术生成

位运算

1.知识

  1. bit 是度量信息的单位,包含0和1两种状态。计算机的各种运算最后无不归结为一个个bit的变化。

  2. 符号 含义
    &
    |
    ~ 按位取反
    ^ 异或
    >> 右移(算术右移,高位补符号)
    << 左移(算术左移,低位补0)
  3. 按位取反举例
    补码的补码就是原码,在计算机中存储全是补码,
    十进制数1的二进制补码为:00000001
    取反后补码为:11111110
    求这个补码的原码:10000010(屏幕上显示都是原码-2) 所以1取反后等于-2

  4. 在补码下,每个数值都有唯一的表示方式,并且任意两个数值做加减法运算,都等价于在32位补码下做最高位不进位的二进制加减法运算。发生算术溢出时,相当于自动对2^32^取模。所以要注意两个大整数相加有可能是负数。

例题1

求a的b次方对p取模的值,其中1<=a,b,p<=10^9^. (POJ1995 raising modulo numbers)

每个正整数可以唯一表示为若干指数不重复的2的次幂的和。也就是说如果b在二进制表示下有k位,其中第i位的数字是c~i~,那么:
b=c~k-1~2^k-1^+c~k-2~2^k-2^+ ... +c~0~2^0^

则:$ a^b = a^{c_{k-1}*2^{k-1}}*a^{c_{k-2}*2^{k-2}}*...*a^{

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值