右移位和除以2(C++)
右移位和除以2(C++)
起因
codeforces 1406D
(ans+d[1]+1)>>1 和 (s+a[0]+1)>>1 产生了完全不同的结果(Ac & Wa)
原因
对于正数,右移一位相当于除以2,但是负数却不同,
(-1>>1)==-1
(-2>>1)==-1
(-3>>1)==-2
(-3>>1)==-2
正数右移高位补0,负数右移高位补1.由于负数存为对应正数的补码.
一个数和它的相反数,的前面各位相反,最后一位相同(0除外),则移除最后一位,两个数各位相反,则 ( a > > 1 ) + ( − a > > 1 ) + 1 = = 0 (a>>1)+(-a>>1)+1==0 (a>>1)+(−a>>1)+1==0,即 ( − a > > 1 ) = = − ( a > > 1 ) − 1 ( a ≠ 0 ) (-a>>1)==-(a>>1)-1 (a\neq0) (−a>>1)==−(a>>1)−1(a=0)
应用
x除以2并向下取整可以写为 ( x + 1 ) > > 1 (x+1)>>1 (x+1)>>1
x除以2并向上取整可以写为 ( ( x − 1 ) > > 1 ) + 1 ((x-1)>>1)+1 ((x−1)>>1)+1
右移位和除以2(C++)相关推荐
- JAVA中右移一位和除以2的区别
关于JAVA中>>1和/2的区别(原码反码补码) 首先说明此处的讨论仅限数值上的区别 测试代码如下 package com.qiu.test; import org.junit.Test; ...
- 左移右移位运算_计算机硬件技术基础M2——计算机运算基础(二)
在上一篇中,我们学习到了计算机底层的一些机器码,以及一些行业标准,这一章,我们将接着学习机器码的一些比较与相关计算. 一.浮点数表示和定点数的比较 ① 当字长相同时,浮点数表示的范围要大得多. ②浮点 ...
- Java移位运算符详解实例——左移位运算符、带符号的右移位运算符
移位运算符也针对二进制的"位",它主要包括:左移位运算符(<<).右移位运算符(>>>).带符号的右移位运算符(>>). 1.左移运算符 ...
- C语言 >> 右移位运算符的原理和一些概念
1.右移位于左移位不同 左移位 不管是 逻辑移位 算术移位 都是低位补0: 右移位 的 逻辑移位和算术移位不同, 算术移位高位补符号位,逻辑移位 高位补0: 右移位 使用逻辑移位的话 需要强制转换成u ...
- 按字节提取整形数值(按位与运算符“”、右移位运算符“”)
输入一个十进制整数,将其转换成十六进制数输出,并提取每一字节所表示的十六进制数值逐一输出.测试数据如下: 分析:从控制台输入一个十进制整数,将其转换成十六进制数输出,接着提取其4个字节.用到按位与运算 ...
- python左移右移位运算_荐Python : 位运算 —— 与、或、异或、左移、右移
Python : 位运算 -- 与.或.异或.左移.右移 位运算 位运算是把数字用 二进制 表示之后,对每一位上 0 或者 1 的运算.位运算共有 5 种运算:与.或.异或.左移.右移. 与.或.异或 ...
- 计算机中右移一位和除以二的区别
二分查找中的中位数 在二分查找算法中,我们经常会写类似int mid = (left + right) / 2的操作,考虑周全一点的会写成int mid = left + (right - left) ...
- 右移一位和除以2的区别
总结 n为非负数时,>> 1和/ 2的结果是一样的 n为负数且还是偶数时,>> 1和/ 2的结果是一样的 n为负数且还是奇数时,>> 1和/ 2的结果是不一样的 原 ...
- 【Python】位运算(按位与 、按位或 |、左移位运算符 <<(相当于乘以2)、右移位运算符 >>(相当于除以2))
先导知识 4和8 相与 (按位相"与"): 需要将写成二进制0和1表示的形式. 当且仅当都为1时,相与 才为1. (下面的 "代码" 也进行了验证~) 4|8 ...
最新文章
- 「文本信息抽取与结构化」目前NLP领域最有应用价值的子任务之一
- new_zeros()函数的作用
- mac r 导出csv文件_每天学习一点R:8.数据的导入和输出
- MySQL中函数CONCAT及GROUP_CONCAT
- C++中成员函数和成员变量的隶属问题
- C和C++里面常见错误和异常出现怎么解决总结(不断更新)
- 2017.10.7 括号序列 思考记录
- 【Redis】Redis 乐观锁
- spring aop和事务同时开启带来的一些问题
- smali java_Android逆向——初识smali与java类
- java pdf 加水印
- 利用谷歌搜索建立自己的站内搜索引擎
- 一个非常naive的分数阶微积分介绍
- js进行txt文件下载方式或oss文件访问下载跨域解决
- 2017年总结和计划
- java ews appointment_ews-java-api学习:新建Recurring Appointment
- 使用ipp静态库,ipp-samples在linux下的make过程
- 2021年施工员-设备方向-通用基础(施工员)试题及解析及施工员-设备方向-通用基础(施工员)模拟试题
- 数字化工厂建设的内容主要有哪三个方面
- python画五角星和六角星程序