C语言 移位运算

C语言 移位运算今天看到这样一行代码 intn 0xfffffffe intz n gt gt 1 intm unsignedint n gt gt 1 printf x x n z m 问输出的值是多少 答案是 z 0xffffffffm 0x7fffffff 这就会涉及到两个概念 逻辑移位 按位进行左右移动 不关心数值

今天看到这样一行代码

 int n =0xfffffffe; int z = n >> 1 ; int m =(unsigned int )n >> 1; printf("%x %x\n",z,m); 

问输出的值是多少?答案是z=0xffffffff m=0x7fffffff
这就会涉及到两个概念.

  • 逻辑移位,按位进行左右移动,不关心数值的符号问题,空出来的都用0补充
  • 算数移位,按位进行左右移动,两头也用0补充,但是不能使得符号位发生改变.

比如一个八位数1001 0110,最高位为符号位.
算数右移因为不能使得符号位发生改变.所以,算术右移后是1100 1011,而逻辑右移后是0.
而左移都是最低位补零.




  • 算术移位指令
    SAR(Shift Arithmetic Right,算数右移)
    向右移动,最高位不变
    SAL(Shift Arithmetic Left ,算数左移)
    向左移动,最低位用0补充








  • 逻辑移位指令
    SHL(Shift Logical Left,逻辑左移)
    SHR(Shift Logical Right逻辑右移)
    左右移动空位都是用0补充.






 int n = 0xfffffffe; 0014149E mov dword ptr [n],0FFFFFFFEh int z = n >> 1; 001414A5 mov eax,dword ptr [n] 001414A8 sar eax,1 001414AA mov dword ptr [z],eax int m = (unsigned int)n >> 1; 001414AD mov eax,dword ptr [n] 001414B0 shr eax,1 001414B2 mov dword ptr [m],eax 

第一个计算z的值,因为是有符号的,所以是sar算数右移.
计算m的值的时候,无符号,所以是shr逻辑右移

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198592.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:51
下一篇 2026年3月26日 下午2:51


相关推荐

  • 免費AI編輯工具升級!Nano Banana正名為Gemini 2.5 Flash Image 功能與玩法一次看

    免費AI編輯工具升級!Nano Banana正名為Gemini 2.5 Flash Image 功能與玩法一次看

    2026年3月16日
    4
  • 什么是java单例模式?[通俗易懂]

    什么是java单例模式?[通俗易懂]关于java单例模式的文章早已是非常多了,本文是对我个人过往学习java,理解及应用java单例模式的一个总结。此文内容涉及java单例模式的基本概念,以及什单例模式的优缺点,希望对大家有所帮助。什么是java单例模式?单例模式是保证类的实例是单例的一种常见设计模式。单例模式的优点:(1)首先肯定是节省内存资源,不管多频繁的通过暴露的方法创建实例,都能保证创建的对象在系统内存中是同一实例对象;(2)灵活性,由于所有实例的创建都由该类控制,所有该类可以灵活的更改实例化过程;(3)实例的

    2022年8月11日
    9
  • cms垃圾收集器采用的回收算法_垃圾回收处理厂

    cms垃圾收集器采用的回收算法_垃圾回收处理厂CMSconcurrentmarkssweep并行标记清除垃圾回收机制。此篇文章是根据众多网上资料总结的关于CMS垃圾回收器的相关知识点。便于个人总结和回忆。垃圾回收器类型1、串行回收,Serial回收器,单线程回收,全程stw;2、并行回收,名称以Parallel开头的回收器,多线程回收,全程stw;3、并发回收,cms与G1,多线程分阶段回收,只有某阶段会stw;CMS垃圾回…

    2022年10月13日
    3
  • ssh学习整理笔记[通俗易懂]

    ssh学习整理笔记[通俗易懂]ssh1、ssh简介ssh(安全外壳协议)ssh为secureshell的缩写,ssh为建立在应用层和传输层基础上的安全协议 ssh端口ssh端口:22Linux中守护进程:sshd安装服务:OpenSSH服务端主程序:/usr/sbin/sshd客户端主程序:/usr/bin/ssh 相关文件服务端配置文件:/etc/ssh/sshd_c

    2022年6月24日
    27
  • 本地Linux配置ip地址的方法

    本地Linux配置ip地址的方法登录后使用ifconfig命令查询IP地址如果没有ip显示则接着使用ifconfigeth0ip地址来主动给虚拟机配置ip要注意这里是eth0而不是ehto

    2022年6月2日
    36
  • charles导致mac无法上网_charles抓不到请求

    charles导致mac无法上网_charles抓不到请求前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

    2022年7月29日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号