按位移位运算符

10/18/2018

本文内容

移位运算符按第二个操作数指定的位置数量向左 (<>) 移动第一个操作数 。

语法

shift-expression:

additive-expression

shift-expression << additive-expression

shift-expression >> additive-expression

两个操作数都必须是整数值。 这些运算符执行常用算术转换;结果的类型是转换后左操作数的类型。

对于左移,留空的右位将设置为 0。 对于右移,将根据转换后第一个操作数的类型填充留空的左位。 如果类型是 unsigned,则将留空的左位设置为 0。 否则,将使用符号位的副本填充它们。 对于没有溢出的左移运算符,语句

expr1 << expr2

等效于乘以 2expr2。 对于右移运算符,

expr1 >> expr2

等效于除以 2expr2(如果 expr1 为无符号或具有非负值)。

如果第二个操作数为负,或者右操作数大于或等于提升后的左操作数的宽度(以位为单位),则移位运算的结果不确定的。

由于没有为溢出或下溢情况提供移位运算符执行的转换,因此当移位运算的结果不能用转换后第一个操作数的类型表示时,信息可能丢失。

unsigned int x, y, z;

x = 0x00AA;

y = 0x5500;

z = ( x << 8 ) + ( y >> 8 );

在此示例中,x 将向左移位 8 个位置,y 将向右移位 8 个位置。 移位值(假定 0xAA55)将相加并赋给 z。

将负值向右移位可生成原始值一半的值(向下舍入)。 例如,-253(二进制 11111111 00000011)向右移动 1 位会生成 -127(二进制 11111111 10000001)。 将 + 253 向右移位生成 +126。

右移保留符号位。 当带符号的整数向右移位时,最高有效位将保留。 当无符号的整数右移位时,将清除最高有效位。

请参阅

c语言移位运算符怎么用,按位移位运算符相关推荐

  1. 【C语言】利用队列的思维理解移位运算符和移位函数

    在c语言中,尤其是单片机的C51中,移位运算操作很常见.实现移位操作的方法有两种:一是利用移位运算符,二是利用移位函数. 目录 一.移位运算符 1.左移 2.右移 二.循环移位函数 三.移位运算符和循 ...

  2. swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...

    swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...

  3. C语言学习及应用笔记之一:C运算符优先级及使用问题

    C语言中的运算符绝对是C语言学习和使用的一个难点,因为在2011版的标准中,C语言的运算符的数量超过40个,甚至比关键字的数量还要多.这些运算符有单目运算符.双目运算符以及三目运算符,又涉及到左结合和 ...

  4. c语言 正号运算符 作用,C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,...

    1级(左结合) () 圆括号:[]下标运算符:->指向结构体成员运算符:. 结构体成员运算符. 2级(右结合) !逻辑非运算符:~按位取反运算符:++前缀增量运算符:--前缀减量运算符:+正号运 ...

  5. Python_Task01:变量、运算符、数据类型及位运算

    变量.运算符.数据类型及位运算 学习教程 变量.运算符.数据类型 1. 注释 2. 运算符 3. 变量和赋值 4. 数据类型与转换 5. print() 函数 思考题 练习题 位运算 1.原码.反码和 ...

  6. c语言表达式5 gt 3 gt 1,perl运算符使用介绍与简单应用

    perl 5基础教程--运算符 一.算术运算符 :+(加).-(减).*(乘)./(除).**(乘幂).%(取余).-(单目负) (1)乘幂的基数不能为负,如 (-5) ** 2.5 # error: ...

  7. c语言的按位或,与,非运算符

    位运算符 C提供了六种位运算运算符:这些运算符可能只允许整型操作数,即char.short.int和long,无论signed或者unsigned. & 按位AND | 按位OR ^ 按位异或 ...

  8. python 整数逆位运算_python训练营:注释、运算符、数据类型与位运算

    天学习的内容整理成脑图如下,其中带☆的是需要重点掌握的模糊知识点,需要加强训练和记忆. 二.具体学习内容 2.1 注释 2.1.1 多行注释 2.1.2 长字符串注释 2.2 运算符 2.2.1 算术 ...

  9. C语言(第二章):数据类型、运算符、表达式

    .:.:第二章:数据类型.运算符.表达式:.:. 第二章: 数据类型.运算符.表达式 C语言的数据类型 在第一课中,我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用.对变量的说明可以 ...

最新文章

  1. 接口经常超时?线程池+ FutureTask来解决!
  2. JSP 第一天:提交表单--获取表单中的数据值
  3. java图片不动了_JDK 12又来了,我学不动了...
  4. 03.shard_allocation_和_cluster的routing设置
  5. [C/C++]C++标准
  6. sqlite3 学习
  7. 关于onSaveInstanceState的javadoc的渣渣翻译
  8. BeautifulSoup_python3
  9. 在Jenkins平台上运行Jmeter
  10. WinDbg蓝屏分析入门
  11. 在Vue中使用Aliplayer,做视频播放或者视频监控
  12. python 完全背包问题_经典动态规划:完全背包问题
  13. veeam备份oracle数据库,Veeam Explorer for Oracle v10:即时发布数据库!
  14. 收到谷歌实习邀请 “比被清华录取还激动”
  15. 7z文件格式及其源码的分析(三)
  16. 洛谷 P1049 装箱问题
  17. BlackHat DEFCON现场秀:阿里安全专家演示“视频水印叠加”和“一分钟越狱iOS 11.4”...
  18. 伴随着5G,这些机器人也来了!
  19. 自签名多级证书亲测可用
  20. 几个非常好用的CMD命令

热门文章

  1. cmd 新建html文件,cmd 打开文件 怎么用cmd打开文件?(看下图)
  2. veth pair上的两个ip能否ping通?
  3. vb html单选按钮,VB单选按钮和复选框练习
  4. 拦截鼠标频繁重复点击事件
  5. 目标检测模型YOLOv5总结文档(理论、代码、 应用)
  6. 网站安全隔离-RBI技术
  7. 电脑上怎么压缩jpg图片大小?jpg怎么缩小文件大小?
  8. IDEA方法注释模板设置
  9. Hbase--协处理器
  10. mac配置jmeter