QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

成熟鱼友Ⅱ

Rank: 6Rank: 6

积分
648
查看: 425|回复: 7

[技术交流] C语言的位运算是什么意思???

[复制链接]
最佳答案
40 
累计签到:22 天
连续签到:1 天
ABC23 发表于 2018-3-3 10:16:18 4257 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请看这个:
rt<<1|1,这个怎么解释(注:这是线段树的代码部分,向递归函数传递参数)
楼层
跳转到指定楼层
最佳答案
1115 
累计签到:361 天
连续签到:4 天
BngThea 发表于 2018-3-3 11:42:32 From FishC Mobile | 显示全部楼层
左移一位,两个数取或运算
最佳答案
40 
累计签到:22 天
连续签到:1 天
ABC23  楼主| 发表于 2018-3-3 12:01:28 | 显示全部楼层
这个……
最佳答案
40 
累计签到:22 天
连续签到:1 天
ABC23  楼主| 发表于 2018-3-3 12:02:59 | 显示全部楼层
好吧,是我没说清楚。
问的是,为什么这里要有一个|运算??+1不可以吗??
最佳答案
40 
累计签到:22 天
连续签到:1 天
ABC23  楼主| 发表于 2018-3-3 12:04:47 | 显示全部楼层
因为考虑到线段树的特殊性,当前结点的左孩子的值为当前结点值的两倍,右孩子比左孩子大一,那么理论上右孩子的值应该是当前结点的两倍再加一啊??为什么要|运算???
最佳答案
304 
累计签到:490 天
连续签到:1 天
人造人 发表于 2018-3-3 12:45:05 | 显示全部楼层
ABC23 发表于 2018-3-3 12:04
因为考虑到线段树的特殊性,当前结点的左孩子的值为当前结点值的两倍,右孩子比左孩子大一,那么理论上右孩 ...
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int test = 1024;
  5.         printf("%d\n", test * 2 + 1);
  6.         printf("%d\n", test << 1 | 1);

  7.         return 0;
  8. }
复制代码

  1. 2049
  2. 2049
  3. 请按任意键继续. . .
复制代码
最佳答案
40 
累计签到:22 天
连续签到:1 天
ABC23  楼主| 发表于 2018-3-3 17:52:59 | 显示全部楼层
void PushDown(int rt,int ln,int rn){
        //ln,rn为左子树,右子树的数字数量。
        if(Add[rt]){
                //下推标记
                Add[rt<<1]+=Add[rt];
                Add[rt<<1|1]+=Add[rt];
                //修改子节点的Sum使之与对应的Add相对应
                Sum[rt<<1]+=Add[rt]*ln;
                Sum[rt<<1|1]+=Add[rt]*rn;
                //清除本节点标记
                Add[rt]=0;
        }
}
最佳答案
40 
累计签到:22 天
连续签到:1 天
ABC23  楼主| 发表于 2018-3-3 17:53:36 | 显示全部楼层
代码来自:https://www.cnblogs.com/AC-King/p/7789013.html

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-19 05:05

快速回复 返回顶部 返回列表