逻辑左移和算术左移,都是在右边补0,效果一样。左移1bit,相当于原数 乘以2。

逻辑右移:右移后,左边补0

算术右移:右移后,左边补符号位,添加的位与原数的符号位相同,正数(0算作正数的一个)补0,负数补1。算术右移1bit,相当于原数 除以2。

C/C++中,对于无符号数,可以认为是逻辑左移和逻辑右移。对于有符号数,可以认为是算术左移和算术右移,

要对一个有符号数 执行逻辑右移,可以先将它强制类型转换为无符号类型。

要对一个无符号数 执行算术右移,可以先将它强制类型转换为有符号类型。

参考:https://blog.csdn.net/wait_nothing_alone/article/details/79516552

#include "stdio.h"
int main(int argc, char** argv)
{int a = 0xfffffffe; // -2int b = a >> 1;               //signed,   arithmetic shift rightint c = (unsigned int)a >> 1; //unsigned, logic shift rightprintf(" b = 0x%x (%d) \n", b,b); // b = a /2 = -1printf(" c = 0x%x (%d) \n", c,c);unsigned int d = 0xfffffffe; // unsigned int e = d >> 1;      //unsigned, logic shift rightunsigned int f = (int)d >> 1; //signed,   arithmetic shift rightprintf(" e = 0x%x (%d) \n", e,e); printf(" f = 0x%x (%d) \n", f,f);// f = d /2 = -1return 0;
}
 b = 0xffffffff (-1) c = 0x7fffffff (2147483647) e = 0x7fffffff (2147483647) f = 0xffffffff (-1) 

C/C++中的逻辑右移和算术右移相关推荐

  1. C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?

    逻辑右移与算术右移的区别? 逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0. 所以算术右移也可以进行有符号位的除法,右 ...

  2. c语言中的右移是逻辑右移还是算术右移的问题

    先上代码 // 10191.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<stdio.h> int main ...

  3. C语言的逻辑右移和算术右移

    首先说明一下这两个概念: 逻辑右移:右移后左边添加0 算术右移:右移后添加的位与原数的符号位相同 在C语言中,对于移位操作执行的是逻辑左移和算术右移,不过对于无符号类型,所有的移位操作都是逻辑的. 所 ...

  4. 逻辑右移和算术右移的区别

    逻辑右移和算术右移有什么区别: ">>>" 逻辑右移 ">>" 算术右移 逻辑右移就是不考虑符号位,右移一位,左边补零即可 算术右 ...

  5. 逻辑左移、算术左移、逻辑右移、算术右移

    汇编指令: (注意,所有移位指令,被移出去的那个位上的值,会被赋值给CF标志位) 逻辑左移:SHL(右边补0) 算术左移:SAL(1.寄存器中自动转换成SHL,左移不存在算术左移,所有左移都是SHL: ...

  6. 逻辑右移和算术右移区别

    逻辑右移就是不考虑符号位,右移一位,左边补零即可.  算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0.  所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次 ...

  7. 算术左移,逻辑左移,算术右移,逻辑右移之间的区别

    1.算术左移,逻辑左移: 都是在右边补0: 比如 00101011 算术左移一位:01010110 逻辑左移一位:01010110 对于二进制的数值来说左移n位等于原来的数值乘以2的n次方 比如000 ...

  8. 逻辑右移、算术右移与循环逻辑右移

    逻辑右移:数据右移,左端补零: 算术右移:数据右移,同时复制符号位(0或1)填在最左边的位置 循环右移:数据右移,最右的数据放入最左侧位置 逻辑左移等于算术左移. 转载于:https://www.cn ...

  9. 逻辑右移和算术右移有什么区别?

    逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0. 所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方. ...

最新文章

  1. VisualSvn Server介绍
  2. Unicode 和 UTF-8 有何区别?
  3. visual studio 添加链接文件
  4. 【学术相关】普通在读奶爸博士生的一年总结!
  5. POJ 1745 Divisibility DP
  6. Java 设计模式之构造者模式
  7. 【博客项目】—数据分页(十)
  8. 关于iframe跨域实践(转载)
  9. 判断元素是否为HTMLElement元素
  10. SQL Server 2008空间数据应用系列十一:提取MapInfo地图数据中的空间数据解决方案...
  11. tp1900芯片对比7621a_TP-LINK WDR7660千兆版 厉害了单芯片TP1900-路由器交流
  12. lighttpd出现mod_indexfile.so: cannot open shared object file: No such file or directory
  13. 阿里巴巴天猫总裁蒋凡被认定为杭州高层次人才
  14. SpringCloud版本Hoxton SR5 --- 第二讲:eureka 、eureka与zookeeper的区别与使用场景。
  15. What is china
  16. 概念(航天):LEO,MEO,GTO,GEO,IGSO,SSO
  17. 区块链从业者地摊致富秘籍
  18. 双十一游戏发烧友都在推荐的电子竞技显示器
  19. 修改 Zotero 参考文献格式
  20. FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)

热门文章

  1. The Moon and Sixpence摘抄
  2. R 散点图,添加标签
  3. jetson nano 安装乐视的深度相机orbbec
  4. ffmpeg m3u8 与 mp4 相互转换
  5. 【GNSS】GREAT多频多系统GREAT-UPD开源代码-第4.1章 代码解读之gnss.h/gnss.cpp
  6. 单片机c语言拟合二次曲线y=a0+a1x+a2x^2
  7. IBM-kmeans-坏盘预测
  8. Linux文件管理 | Liunx 常用命令
  9. OASIS协议标准文档的解读_第一部分
  10. 元学习之《On First-Order Meta-Learning Algorithms》论文详细解读