左移与右移

左移

  无论被移动的数是有符号还是无符号,左移一位相当于乘2(在不溢出的情形下)

 

右移

  对于无符号数,右移一位相当于除以2;

  对于有符号数,如果还想获得同样右移除以2的效果,就要考虑算数右移,即符号位始终不变,所有位(包括符号位)都向右移动一位,这样造成的结果就是,整数通过算数右移,最终都会等于0(所有bit都是0),负数通过算数右移,最终都会等于-1(所有bit都是1)。

 

有符号算数右移与除法

有符号算数右移与对应的除法并不等价,比如,-1 / 2结果为0,但是 -1 >> 1结果仍位-1。其中的差别从汇编码可以看出来,下面先贴出源码:

int main() {int a = -1;int b = a / 2;int c = a >> 1;
}

对应的汇编码:

; 1    : int main() {push    ebpmov    ebp, espsub    esp, 12                    ; 0000000cH; 2    :     int a = -1;mov    DWORD PTR _a$[ebp], -1; 3    :     int b = a / 2;mov    eax, DWORD PTR _a$[ebp]cdq               ;将eax的最高bit位复制到edx寄存器sub    eax, edxsar    eax, 1   ;算数右移指令mov    DWORD PTR _b$[ebp], eax; 4    :     int c = a >> 1;mov    eax, DWORD PTR _a$[ebp]sar    eax, 1mov    DWORD PTR _c$[ebp], eax; 5    : }

从汇编码可以看到,-1 / 2和-1 >> 1的汇编码是不一样的。

转载于:https://www.cnblogs.com/chaoguo1234/p/5414554.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Serializing Lua objects into Lua Code

The following little snippet allows you to ‘pickle’ Lua objects directly into Lua code (with the exception of functions, which are serialized as raw bytecode). Metatable support is on the way, but for now, it should be useful enough. Example code: view s…

布局管理器android,Android课程---布局管理器之相对布局(一)

下面示例的是在父容器里如何设置按钮的位置,难度:***,重点是找到一个主按钮,设置它的id,然后根据它来设置其他按钮在父容器的位置。代码示例:android:layout_width"match_parent"android:layout_…

【Cocos2d-Js基础教学 入门目录】

本教程视地址频在:九秒课堂 完全免费从接触Cocos2dx-Js以来,它的绽放的绚丽让我无法不对它喜欢。我觉得Js在不断带给我们惊喜;在开发过程中,会大大提升我们对原型开发的利用率,使用Js语言做游戏开发,使游戏…

Hammer.js移动端触屏框架的使用

hammer.js是一个多点触摸手势库,能够为网页加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多点触摸事件,免去自己监听底层touchstart、touchmove、touchend事件并且写一大堆判断逻辑的痛苦。hammer.js不但支持触摸屏设备的浏览器,在桌面浏…

Android实现笔记本修改功能,安卓12第二个开发者预览版推出:UI、功能有所改进...

最近谷歌正式推出了Android 12的第二个开发者预览版,带来了很多UI和功能上的改进。首先最明显的变化应该是锁屏界面和下拉通知栏的音乐播放器。此前这部分UI的配色一直采用的是音乐专辑的主色调,但在Android 12上,这个配色变成了系统的强调色…

Delphi编译报错对照表

; not allowed before ‘ELSE’ → ElSE前不允许有“;” ” clause not allowed in OLE automation section → 在OLE自动区段不允许“”子句 ” is not a type identifier → 不是类型标识符 ” not previously declared as a PROPERTY → 前面没有说明PROPERTY ‘GOTO ‘ lea…

C语言中Union类型的使用方法

转自:http://blog.csdn.net/feimor/article/details/6858103 使用C语言时,常常使用struct,对于union类型却几乎没有用过,只知道它是联合类型,各字段共享一块内存,实际应用中却不知道它的具体用途。 今天读《…

android 点对点语音,使用Android SIP Stack进行点对点SIP呼叫?

我一直被困在同样的问题上.如果你可以在没有android sip api的情况下制作它,你可以查看rtp api,它为你提供了一些较低级别的工具来制作P2P VOIP应用程序,而无需服务器.To support audio conferencing and similar usages, you need toinstantiate two classes as endpoints for…

拓扑排序

用两种方式来实现 1、 深度优先搜索(DFS) 对有向图采取深度优先搜索,并且在postVist处,打印所访问的节点。最后打印出的字符序列的反序列正好满足拓扑排序。(可以在postVist()方法中&#xff0c…

阿里启动NASA计划创造新经济核心科技

本文讲的是阿里启动"NASA"计划创造新经济核心科技【IT168 资讯】2017年3月9日,阿里巴巴集团在杭州召开首届技术大会,动员全球两万多名科学家和工程师投身“新技术战略”。会议透露,阿里巴巴正在启动一项代号“NASA”的计划&#xf…

ORACLE创建表空间和用户

--表空间 CREATE TABLESPACE sdt DATAFILE F:\tablespace\demo size 800M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; --索引表空间 CREATE TABLESPACE sdt_Index DATAFILE F:\tablespace\demo size 512M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AU…

PHP-CGI, FastCGI, PHP-FPM的关系和区别

Web server(apache, nginx) 接受到一个php请求后要解析php文件, 怎么解析呢, web server是C语言写的, 所以需要一个协议, 一个php解释器, 也就是CGI. FastCGI是用来提高CGI性能的, 可以说是CGI的升级版. CGI每当一个请求过来都要开启一个进程, 访问结束再关闭一个进程, 太累. F…

android 6关闭防火墙,安卓手机如何关闭防火墙

我的安卓手机不想使用防火墙了!该如何关闭呢?下面由小编给你做出详细的安卓手机关闭防火墙介绍!希望对你有帮助!安卓手机关闭防火墙方法一1、如果该防火墙不是系统自带的,是你下载安装的,就直接在设置选项中,选择应用程序--管理应用程序&…

Powershell命令中的 CommonParameters是指什么

因为在命令中经常遇到这个参数,后来找了一下,有一个微软的官方文档,就不翻译了,英文好的自己读吧。https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_commonparameters?viewpowershel…

java日志之slf4j与logback简单使用

最近在开发遇到日志是使用slf4j与logback.xml的配置,所以就记录下来了。 1、导入这几个jar包: Logback 分为三个模块:logback-core,logback-classic,logback-access logback-core 是核心; logback-classic …

android one x3怎么样,618旗舰手机怎么选,看完这篇文章,你就会知道

转眼间,2021年即将过半,一年一度的年中购物狂欢节618就要到来了。我已经迫不及待了。毕竟在618年中大促的时候,各家厂商都有力度非常大的活动。而且也有很多小伙伴一直在观望,想要在618的时候给自己换一款手机。说实话&#xff0c…

字符设备驱动程序框架

via:http://blog.chinaunix.net/uid-20672257-id-3142809.html 1、写出open、write函数 2、告诉内核 1)、定义一个struct file_operations结构并填充好 static struct file_operations first_drv_fops {.owner THIS_MODULE, /* 这是一个宏&…

华为鸿蒙与magic,如果荣耀Magic3搭载了屏下镜头和鸿蒙系统,你会做第一批吗?...

华为荣耀在目前的手机市场中,荣耀手机的人气还是蛮高的,从高端旗舰市场到中低端市场,我们都能够看到荣耀手机的踪影,这已经可以代表荣耀手机的优势了。要知道华为荣耀这两年的发展速度非常快,产品的布局速度也是如此&a…

第十九章 我国农村资金筹集

农村改革解说(专著)第十九章 第十九章 我国农村资金筹集 1、农村公共事业统筹经费怎样确定? 总的原则是:制止对农民的不合理摊派,减轻农民的额外负担,保证农村合理的公共事业经费。具体要求如下&#xff1a…

两个Python web框架:Django Tornado比较

就是说它作为 web 框架比 Django 简单,又支援异步 IO,且更不需要前端的 webserver ? 我已经混乱了, Tornado是 Nginx、Django、Node.js 的结合体?又或是 Nginx * 20% Django * 40% Node.js * 40% ?你需要搞清楚几个…