今天发现一个问题, 假如 i = 12, 那么 j = i >> 32, 则j = 12;但是j = i >> 31,j = j >> 1,则j = 0为什么呀。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
已采纳
关于移位运算的一个问题,十分不解
收起
- 写回答
- 好问题 0 提建议
- 关注问题
- 微信扫一扫点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
4条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
小灸舞 2016-03-13 05:39关注对于右移大于或等于位宽的操作,或者右移负数的操作,其结果将依赖于编译器的处理和硬件指令的处理,并不唯一。32正好是一个int变量所占的内存,但这种位移的行为是未定义的。由编译器决定,所以没有标准答案。在VC++编译器上是等于原值的
LZ可以看一下汇编的代码就会发现,编译器直接把代码编译成了赋值操作,而没有做移位操作.
所以第一种情况下还是原值,而第二种由于移位小于32位,所以就按正常的移位操作来,就得到了0本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫点击复制链接分享编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览
轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2012-08-31 08:35回答 3 已采纳 呵呵,哥们这个是逐位运算符看着这个 [url]http://demojava.iteye.com/blog/1367827[/url] 里面有说明: 想什么:左移运算符> 用0补足的右移
- 2021-04-01 11:01回答 3 已采纳 这个多个问题,我一个一个给你说吧 1. 为什么右移操作会连符号为一起改变, 这个嘛,确实不知道呢,毕竟别人这么设计,可能有很多考虑在里面吧,但是不知我这种渣渣能知道了的 2. 移位操作比乘除快
- 2016-04-20 06:01回答 1 已采纳 ``` mask = (unsigned short)(~0) >> n; ```
- 2016-10-08 05:18armwind的博客 最近在调试一个Camera ISP OTP校准的问题,在开发过程中,要将2个字节的数据组合成16bit的数据。一开始我以为只要是一大块内存,我们告诉它类型,那么编译器就会自动分配对应的内容。例如:下面图1中连续的内容,...
- 2022-08-21 01:54回答 1 已采纳 题主你好: 不用这么麻烦: 思路说下,把s1复制一遍,s1变成了s1+s1。在新的s1里,只要有s2,遍历就行;如果没有,就false #include <iostream> #incl
- 2021-06-23 15:24回答 2 已采纳 data |= 1<<a; 这里形成的数据类型跟这个1有很大关系,如果修改为如下代码,将1强制为long long类型(64位),然后用%lld打印结果,则符合你的预期。说明程序默认的数
- 2023-01-15 10:28回答 1 已采纳 望采纳!!!点击回答右侧采纳即可!!你的理解是正确的,但是你可能没有考虑到右移运算符的优势。右移运算符比除法运算符更快,因为它只需要一步操作,而除法运算符需要多步操作。因此,在某些情况下,使用右移运算
- 2021-03-02 03:09Cherry-GeGe的博客 2.8.4 网络课堂 2.9 for…in循环问题 2.9.1 问题描述 2.9.2 解决方法 2.9.3 知识扩展——for…in循环语句 2.9.4 网络课堂 2.10 一个关于for each…in循环的疑问 2.10.1 问题描述 2.10.2 解决方法 2.10.3 知识扩展...
- 2021-12-07 06:09回答 2 已采纳 循环遍历数组,将数组元素赋值到新数组中。 #include "stdio.h" int main() { int num[10]={0,1,2,3,4,5,6,7,8,9},num2[10]
- 2022-08-07 07:53回答 1 已采纳 应该是第48行c=false这句有问题,然后第10行那里c=true也要改一下,因为都是判断真假,而不是赋值为真假值,另外程序逻辑也稍微需要修改下,具体解释在代码文件进行了注释,仅供参考: #inc
- 2021-12-13 12:29回答 2 已采纳 int x=0; scanf("%d",x); int n=x<<1; //n就是x乘2的结果,在二进制中一位表示2的一次方
- 2019-10-08 10:14以墨言智的博客 1.在Java语言中null值是什么?在内存中null是什么? 2.如何理解赋值语句 Stringx=null? 2、什么是不可变类 3、值传递与引用传递有哪些区别 (1)值传递 (2)引用传递 4、不同数据类型的转换有哪些规则 (1...
- 2022-01-28 16:31Frey_Liu的博客 C语言一些实用技巧指定的初始化数组结构体与联合体宏的使用宏列表编译时断言静态断言获取偏移量获取容器地址获取数组元素数目头文件保护符符号转字符串符号拼接泛型编程掩码判断机器的字节顺序整数任意进制数转换...
- 2021-06-10 01:17雪靡的博客 C++语言安全规范》1,我了解到了我在编程中很多缺失的部分。现在记录下几个要点: 规则1.1.4:严禁对指针变量进行sizeof操作 编码人员往往由于粗心,将指针当做数组进行sizeof操作,导致实际的执行结果与预期不符。...
- 2012-01-22 02:26叶广明_微信ye_guangming的博客 第二部分 导论,这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计,编码,,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,,和软件开发的二个重要过程,,软件工程的相关...
- 2020-07-14 08:57ICoder_Next的博客 文章目录1.(重点)Java...如何实现无符号数的右移操作10.char型变量中是否可以存储一个中文汉字 1.(重点)Java提供了哪些基本数据类型 Java语言一共提供了8种原始的数据类型(byte, char,short, int, long, float, do
- 2024-06-23 16:09Tang Paofan的博客 分离式编译如果想声明一个变量而非定义它,就在变量前添加关键字extern// 声明i,而非定义iint j;// 声明并定义j任何包含了显示初始化的声明即成为定义。我们能给由extern关键字标记的变量赋一个初始值,但是这么做...
- 2012-06-07 12:00wangluozhangleilei的博客 第二部分 导论,这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计,编码,,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,,和软件开发的二个重要过程,,软件工程的相关...
- 2022-01-18 06:28RealMartinX的博客 不论你想从这篇博客中了解到什么,如果你是一个新手,请自己审查自己手里拿着的板子。我的单片机型号为STC89C52RC,如果你不是这个型号,那么本文所述可能将不适合你的开发。 另外,本文编写的目的是以STC89C52RC为...
- 2016-10-11 06:37一个90后的成长史的博客 眼前这本书充分体现了作者的所思、所想、所感,他用自己独特的眼光审视着计算机技术的世界,也用自己独特的思维逻辑对技术进行解读,并用自己特有的,呵呵,偶尔带有“四个逗号=一个逗号”这样的语言风格,进行着...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
- 公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司