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”表示。
 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python制作自动交易程序_Python如何实现自动化交易

    python制作自动交易程序_Python如何实现自动化交易Python的火热,刺激了市场的需求,在国内某知名互联网招聘网站上,Python开发工程师的年薪普遍在25万-50万之间,岗位数量多达数万。如果你只能选读一门编程语言,那么除了Python,还是Python。要赶上这趟快车不容易,尤其是对于非专业出身的小白来说,面对一堆代码就已经万脸懵逼了,还怎么可能成为Python大牛?今天小蛙就带你抄捷径,从小白到大牛,看看如何在三个月内学会P…

  • linux查看时间

    linux查看时间linux查看时间

  • deviceiocontrol true什么意思_audioread函数

    deviceiocontrol true什么意思_audioread函数前言:最近需要对Windows中的设备进行编程操作,其中涉及到非常重要的函数DeviceIoControl,在使用的时候也比较的复杂,国内这一块中文资料比较少,在学习之余顺便将其翻译出来,以供参考,如有错误,欢迎指正。lcb0281@163点comMSDN原文地址:DeviceIoControlfunctionDeviceIoControl将控制代码直接发送到指定的设备驱动…

  • 1. Pycharm新建项目[通俗易懂]

    1. Pycharm新建项目[通俗易懂]1.创建Python项目File–newproject(Location选择项目的位置,最后可以加上文件的名字,如Project1),选择好位置后,点击创建,完成项目的创建。2.创建python项目右键选择项目名称(Project1)的文件夹,–new–pythonfile,给文件起名字(如first)3.文件运行写完项目后,单击右键,选择run‘first’4.设置自己的起始模板file–setting–editer–fileandcodetemplates–pyt

    2022年10月29日
  • 像Excel一样使用python进行数据分析

    像Excel一样使用python进行数据分析Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作。在Python中pandas库用于数据处理

  • 乱码转换器在线转换_有了这几款视频下载转换软件,想看的视频都可以随意看了…

    乱码转换器在线转换_有了这几款视频下载转换软件,想看的视频都可以随意看了…虽然现在的视频播放器支持大部分视频格式,但是由于有些电影或者电视剧资源有限,能够下载下来的格式并不支持,这个时候就需要用到视频格式转换器啦,可以帮助你从任何音视频格式转换到你需要的格式,小编给大家带来了几款视频下载转换工具。ClipGrabforMac(视频下载转换工具)轻松下载托管在不同网站上的视频内容ClipGrab能够传输YouTube,Vimeo,Dailymotion,Metacaf…

发表回复

您的电子邮箱地址不会被公开。

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