移位操作只是简单地把一个值的位向左或右进行移动。

1. 左移位

符号:<<

在左移位中,之最左边的几位被丢弃,右边多出来的几个空位则由0进行补齐。

例如:01101101 << 3

结果:01101000

2. 右移位

符号:>>

逻辑移位:左边移入的位用0填充

算术移位:左边移入的位由原先该值的符号位决定,符号位为1则移入的位均为1,符号位为0则移入的位均为0,这样能够保持原数的正
负形式不变。

例如:10010110 >> 2

逻辑移位:00100101

算术移位:11100101

左操作数的值将移动由右操作数指定的位数。两个操作数都必须是整型类型。

标准规定无符号值执行的所有移位操作都是逻辑移位。但对于有符号值,到底是采用逻辑移位还是算术移位则取决于编译器。

警告:

注意类似这种形式的移位:

a<<-5

左移-5位表示什么?是表示右移5位吗?还是根本不移位?在某台机器上,这个表达式实际执行左移27位的操作。

标准规定这类移位的行为是未定义的,所以它是由编译器决定的。然而,很少有编译器设计者会清楚地说明如果发生这种情况将会怎样,所以它的结果很可能没有什么意义。因此,应该避免使用这种类型的移位,因为它们的效果是不可预测的,使用这类移位的程序是不可移植的。

如果是十进制数进行移位,会先变换成二进制数进行移位,然后及那个结果在转换为十进制数。

例如:10 << 2

10的二进制数为:1010

结果:40(101000)

左移位和右移位的应用:
计数一个值中值为1的位的个数

int count_one_bits( unsigned value)
{int ones;for(ones = 0; value != 0; value = value >> 1)if( value % 2 != 0 )ones += 1;return ones;
}

C语言中的左移位和右移位相关推荐

  1. python位运算符_详细介绍Python语言中的按位运算符

    按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下: 按位与 ( bitwise and of x and y ) & 举例: 5&3 = 1 解释: 101 ...

  2. python语言中1010的二进制表示_Python语言中的按位运算

    (转)位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加 ...

  3. 单片机c语言左移的作用,[转载]单片机c语言中的左移右移

    单片机c语言中的左移右移 左移 变量1 << 变量2 将变量1的二进制位值向左移动由变量2所指定的位数. 例如: a = 0x8f; // 10001111 a << 2; / ...

  4. c语言的左移运算,C语言中的左移和右移运算.docx

    C 语言中的左移和右移运算 C 语言中的左移和右移运算 (>> 和 < 1.各种数据格式(整型int ,字符型 char 等)占有几个存储单元(不同的编译器有所不同) 在TC2.0和 ...

  5. c语言中左移一位 由什么补充,计算机原理与基础 —— C语言中的左移与右移

    1.双目运算符 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算. 位移位运算符分为左移和右移两种,均为双目运算符. 例如: 8  >>  3   (意思是8向右移动3 ...

  6. C语言中的左移与右移[转]

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1; i = i << 2; //把i里的值左移2位 也就是说,1的2进制是00 ...

  7. C语言中的左移与右移

    原文地址http://www.cnblogs.com/myblesh/articles/2431806.html 先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例 ...

  8. 单片机c语言左移的作用,单片机c语言中的左移右移

    // 据说有些编译器采用逻辑右移,即左端补0 结果:a = 0xe3 (11100011) 1当左移移出的是"1"而不是0时,你该怎么想? 2 当左移的操作数是一个sign型是,你 ...

  9. c 语言中 的左移右移

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1; i = i << 2;  //把i里的值左移2位 也就是说,1的2进制是0 ...

最新文章

  1. BCH链上交易量剧增,超越莱特币
  2. 一步一步写算法(之hash表)
  3. 百度痞哥:百度贴吧的回帖为什么没做点赞功能?
  4. authpuppy mysql_authpuppy 认证服务器搭建
  5. SQLServer禁用、启用外键约束
  6. yjv是电缆还是电线_YJV与VV电缆的区别你知道吗?推荐
  7. python如何训练图片_Python练习第一题,在图片上加入数字
  8. shell打印正三角形
  9. 从 高斯 到 正态分布 到 Z分布 到 t分布
  10. 提高开发效率的 Chrome 开发者工具高端使用技巧(一)
  11. 百度云盘海外版免费不限速,就是国内不能用!
  12. python随机生成4位验证码并判断是否正确_python生成4位验证码
  13. 微信ios浏览器 与 iframe的不兼容问题
  14. 沈阳计算机ps自锁按键开关,按键双排自锁开关PS-2D07L,PS-22E07
  15. MySQL学习(三) 数据类型约束、TCL语言、流程控制
  16. div添加阴影(盒子阴影)box-shadow各参数含义
  17. c语言程序设计:现代方法 勘误,C语言程序设计基础教程----勘误记录
  18. 自动控制原理实验一 典型环节及其阶跃响应
  19. 算法刷题7(C++)BFS算法
  20. 微信小程序两张图片(本地/在线)合成为一张并下载

热门文章

  1. upc 兔 最小生成树
  2. 正则表达式 正向前瞻
  3. Java 实现判断链表是否有环
  4. vue项目中如何用代理解决跨域,什么是代理
  5. 对话:未来出行实验室发起人王亚辉博士#超级个体
  6. Hyper-V由于虚拟机监控程序未运行
  7. 计算机科学导论:第五章 计算机组成
  8. 前缀和【超详细讲解前缀和】
  9. Linux欧姆单位怎么打,RF场强的基本单位及换算
  10. 强网杯 2018 opm