C 语言中负数移位运算讲解

C 语言中负数移位运算讲解C语言中负数移位运算讲解“<<”、“>>”为移位运算符。“<<”为左移位运算符,即数据字节中的每个二进制位同时向左移位。如“x<<n”表示x中的每个二进制位同时向左移动n位。“>>”为右移位运算符,即数据字节中的每个二进制位同时向右移位。如“x>>n”表示x中的每个二进制位同时向右移动n位。下图…

大家好,又见面了,我是你们的朋友全栈君。

C 语言中负数移位运算讲解
“<<”、“>>”为移位运算符。 “<<”为左移位运算符,即数据字节中的每个二进制位同时
向左移位。如“x<<n”表示 x 中的每个二进制位同时向左移动 n 位。 “>>”为右移位运算
符,即数据字节中的每个二进制位同时向右移位。如“x>>n”表示 x 中的每个二进制位同时
向右移动 n 位。
下图演示了一个 2 字节变量左移 3 位的过程:
十进制数-555 的二进制表:
1 0  0 0  0  0 1  0 0  0  1 0  1 0  1 1
先转换成二进制补码表:
1 1  1 1  1  1 0  1 1  1  0 1  0 1  0 0
最左端位保持不变 补码加“1”后状态
再将补码加“1”:
1 1  1 1  1  1 0  1 1  1  0 1  0 1  0 1
下一步向左移 3 位:
1 1  1 0  1  1 1  0 1  0  1 0  1 0  0 0
左端“离开”3 位丢弃 右端“移入”3 位用“0”补齐
最左端一位保持不变
再转换成二进制补码表:
1 0  0 1  0  0 0  1 0  1  0 1  0 1  1 1
补码再加“1”:
到此步结束。
1 0  0 1  0  0 0  1 0  1  0 1  1 0  0 0
补码加“1”后状态
结果转换成十进制数为“- 4440”。
总结:负数左移时,任何情况下“移入”位将用“0”补齐。
“>>”右移位运算可分为两种情况:一种是移入“0”的叫逻辑右移;一种是移入“1”的叫
算术右移。 负数右移用到的是算术右移。
下图演示了一个 2 字节变量右移 3 位的过程:
十进制数-555 的二进制表:
1 0  0 0  0  0 1  0 0  0  1 0  1 0  1 1
先转换成二进制补码表:
1 1  1 1  1  1 0  1 1  1  0 1  0 1  0 0
最左端位保持不变 补码加“1”后状态
再将补码加“1”:
1 1  1 1  1  1 0  1 1  1  0 1  0 1  0 1
下一步向右移 3 位:
1 1  1 1  1  1 1  1 1  0  1 1  1 0  1 0
左端“移入”3 位用“1”补齐 右端“离开”3 位丢弃
最左端一位保持不变
再转换成二进制补码表:
1 0  0 0  0  0 0  0 0  1  0 0  0 1  0 1
补码再加“1”:
到此步结束。
1 0  0 0  0  0 0  0 0  1  0 0  0 1  1 0
补码加“1”后状态
结果转换成十进制数为“- 70”。
总结:负数右移时,任何情况下“移入”位将用“1”补齐。
注:二进制表最左端的二进制位表示符号位,“+”用“0”表示,“-”用“1”表示。
 

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

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

(0)
上一篇 2022年7月14日 下午9:16
下一篇 2022年7月14日 下午9:16


相关推荐

  • java 代码中sql模糊查询Like拼接

    java 代码中sql模糊查询Like拼接Like模糊查询拼接:StringBuilderstringBuilder=newStringBuilder();stringBuilder.append(“selectu.*fromepai_sys_useru”);//写?是可以的是没问题的stringBuilder.append(“whereu.display_nameLikeconcat(‘%’,…

    2022年6月1日
    135
  • Unity插件——Odin使用心得(一)「建议收藏」

    Unity插件——Odin使用心得(一)「建议收藏」声明:本文章为作者对Odin插件常见功能的学习笔记,仅用于学习用途.插件在活动打折时购买,本人不提供插件下载链接.系列文章目录Unity插件——Odin使用心得(一)Unity插件——Odin使用心得(一)系列文章目录一.开发环境二.使用前准备三.常用功能讲解1.命名空间2.AssetsOnly\SceneObjectsOnly:引用限制为预制体\场景物体3.Delayer:延迟赋值4.DetailedInfoBox:信息提示–标题/内容5.EnableGUI:激活GUI6.GUIColo.

    2022年7月21日
    17
  • 矿机价格又双叕暴跌!个人挖不到收益,区块已经垄断

    矿机价格又双叕暴跌!个人挖不到收益,区块已经垄断&#13;&#13;&#13;&#13;&#13;&#13;&#13;从去年高峰时期的2万元抢不到,跌到现在7000元竟然无人问津。有这样一个故事在行业里流传:曾经有一位…

    2022年6月3日
    47
  • MATLAB 图像处理 简单人脸检测(详细,你上你也行)

    MATLAB 图像处理 简单人脸检测(详细,你上你也行)1 人脸检测原理框图整体思路是寻找图片中最大的连通域 将其认定为人脸 第一个环节均值滤波 是为了减弱图像的相关细节部分 以免毛刺影响后期连通域的形成 二值化方便形态学处理 减少运算量 考虑到人脸有黑人和白人黄种人 黑人肤色较深 在二值化之后面部区域不容易形成较大的连通域 如果采取形态学边界提取的办法 就可以避免这个问题 形态学边界提取 只要结构元素够大 也可以形成较大的封闭连通域

    2026年3月19日
    2
  • 国二C语言:VC++2010学习版「建议收藏」

    国二C语言:VC++2010学习版「建议收藏」全国计算机等级考试二级C语言程序设计考试大纲(2019年版)指出:开发环境:MicrosoftVisualC++2010学习版。也就是说,不管你在学习过程中用的是什么样的开发环境…

    2022年4月20日
    341
  • js 打开新页面/js 重定向页面

    js 打开新页面/js 重定向页面1 nbsp 打开新 window open http www baidu com aaa abc 2 重定向 window location href www google com g id

    2025年11月17日
    5

发表回复

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

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