博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++]移位
阅读量:6038 次
发布时间:2019-06-20

本文共 531 字,大约阅读时间需要 1 分钟。

一、 看到一个计算n的绝对值的方法:n * ((n>>31<<1)+1),开始不是很理解,后来才发现是自己对于C++的移位操作符理解有误。

查阅了些资料和自己动手实践了下,做了下面的总结:

1、左移操作符(<<)在左边插入0一补充空位。

2、右移操作符(>>),如果其操作数是无符号数,则左边开始插入0;如果操作数是有符号数,则插入符号位的副本或者0值。

3、移位操作的右操作书不可以是负数,而且必须是严格小于左操作书位数的值。否则,操作的效果未定义。

4、VS中实际进行的是m>>(n%32)移位,这就导致了m>>2等于m>>34

5、VSm>>-1移动的位数为-1对应的机器码,即把-1当做无符号数对待,移位的位数为FFFFFFFFh

二、在此顺便写下在汇编中的移位规则,供大家参考

    SHLSHR表示逻辑左移和逻辑右移,SARSAL表示算术左移和算术右移。其中逻辑左移和算术左移都是寄存器二进制整体向左移动,

并在右边补0而右移则不同,逻辑右移是整体向右移,并在左边补0,而算术右移则是根据原符号的值补与其相同的值。

转载于:https://www.cnblogs.com/dirt2/archive/2012/10/12/yi_wei.html

你可能感兴趣的文章
坑爹的Mysql
查看>>
每天进步一点点--&gt;函数fseek() 使用方法
查看>>
Unity Editor类常用方法
查看>>
Code Review中的几个提示
查看>>
AUC(Area Under roc Curve)学习笔记
查看>>
Flash和js交互的效率分析
查看>>
Linux高性能server编程——Linux网络基础API及应用
查看>>
office编程必不可少
查看>>
SQL —— 视图
查看>>
百分比,千分比,万分比,百分比或百分吕,千分率等
查看>>
[转载红鱼儿]Delphi实现微信开发(3)如何使用multipart/form-data格式上传文件
查看>>
类似微信发图片的样式
查看>>
ios+oc面试题
查看>>
linux+nginx+tomcat负载均衡,实现session同步
查看>>
用Asp.net实现简单的文字水印
查看>>
[Javascript] Function scope
查看>>
Nginx 变量漫谈(八)
查看>>
灵活运用 SQL SERVER FOR XML PATH
查看>>
windows Yii框架的安装
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
查看>>