问题描述:

为什么负数除二和右移一位的结果不一样?

这是在VS2013,C#中

这是在CB中

也有一些编译器,结果是一样的,但是为什么结果会是这样呢?

究其原因,还得看看汇编代码,在VS2013中提供了反汇编指令,结果如下

可以看到。

第一句:F = X / 2

00DF39F7  mov         eax,dword ptr [ebp-58h] <span style="white-space:pre">  </span>;将X的值移到寄存器eax
00DF39FA  mov         ecx,2        <span style="white-space:pre">      </span>;将值2移到ecx
00DF39FF  cdq        <span style="white-space:pre">                </span>;将eax高位扩展到edx
00DF3A00  idiv        eax,ecx       <span style="white-space:pre"> </span>;做除法运算
00DF3A02  mov         dword ptr [ebp-50h],eax<span style="white-space:pre">    </span>;移动到内存

(关于idiv指令详见二进制除法)

第二句:G = X >> 1

仅仅是做一个右移运算,所以如果最低位是1的话,就会被抹去。

总结:

除法运算,结果都向0取整;位运算结果向下取整

转载于:https://www.cnblogs.com/tinyjian/p/6550701.html

【小知识】为什么负数除二和右移一位的结果不一样?相关推荐

  1. 多暂估的库存如何调整_会计们看过来 暂估存货小知识

    原标题:会计们看过来 暂估存货小知识 按照相应会计政策和制度规定,企业在作外购入库核算时,必须基于材料已经验收入库.材料货款已经结算,要有外购发票.外购入库单等相关单据票据. 现在很多企业在生产经营过 ...

  2. C语言你不得不知道的小知识

    C语言你不得不知道的小知识: 1: 常见的变量修饰关键字:static.const.extern.volatile.register static:(该变量保存在全局静态区)  a.修饰局部变量--& ...

  3. 小知识:皮尔逊相关系数分析

    小知识 皮尔逊相关系数分析 用于考虑线性相关程度的统计量 在[-1,1]之间,绝对值越大,则越显著,负数表示负相关,正数表示正相关

  4. 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...

    目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...

  5. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  6. GO小知识之实例演示 json 如何转化为 map 和 struct

    今天简单谈一些 JSON 数据处理的小知识.近期工作中,因为要把数据库数据实时更新到 elasticsearch,在实践过程中遇到了一些 JSON 数据处理的问题. 实时数据 实时数据获取是通过阿里开 ...

  7. 1 编码_TMS320F28379D之CLB解码多摩川编码器1——入手小知识(原创)

    今天,跟大家分享一下28379D的CLB解码多摩川绝对值编码器的一些入手小知识. 首先,28379是属于TI的2837x系列,D是双核版本,S是单核版本,S和D都是带CLB模块的,都可以实现位置解码, ...

  8. sam格式的结构和意义_BAM/SAM文件格式的一些小知识

    BAM/SAM文件的一些小知识 前言 如果不是在陈老师这读博,然后开始折腾BAM/SAM文件,我估计这辈子都不会了解到这么多东西吧 SAM/BAM简介 Sequence Alignment Map ( ...

  9. 安卓开发小知识 - 3

    内容来源:Android Development Tidbits // No. 3 这是第三次分享安卓开发中的一些小知识点.我们很高兴有这么多人知道了这个有趣的系列,并且对你们通过评论和邮件表达的支持 ...

最新文章

  1. mingw编译boost_1_66_0
  2. MAT之GA:GA优化BP神经网络的初始权值、阈值,从而增强BP神经网络的鲁棒性
  3. 底部分页栏_2020年执业药师考试教材各科目增加页数!最多203页
  4. css响应式网格布局生成器_如何使用网格布局模块使用纯CSS创建响应表
  5. Linux下打印调试管理
  6. hdu java_HDU-java实现1176
  7. 苹果进行iPhone问世后最重大转型:硬件时代转互联网服务
  8. 亏损208亿,滴滴橙心优选裁员关停!曾融资12亿,最高估值320亿
  9. 开发人员的测试报告,要包含各平台
  10. lstm预测单词_从零开始理解单词嵌入| LSTM模型|
  11. 项目中发现 unity运行挂机放那大约半小时,运行项目变得越来越卡顿
  12. https spdy
  13. pm2部署node项目
  14. 矛与盾:黑客攻防命令大曝光
  15. Unity入门 简单的3D场景制作
  16. cadence SPB17.4 - allegro DRC - Physical - Maximum Neck Length
  17. java字符串与数值型相互转换
  18. 天融信虚拟企业防火墙学习
  19. apM Coin与Block72达成战略合作携手加速全球扩张
  20. MJ恋上数据结构(第1季 + 第2季)笔记

热门文章

  1. ASP.NET中随机数生成及应用
  2. 与女儿谈商业模式 (3):沃尔玛的成功模式
  3. 2018年东北农业大学春季校赛 D wyh的迷宫【搜索】
  4. Freemarker问答:
  5. 让Maven项目使用Nexus作为远程仓库的settings.xml配置
  6. AbstractBeanDefinition:lenientConstructorResolution属性源码分析
  7. JAVA card 应用开发(二) 在项目添加APPLET
  8. C# 中对COOKIES的操作
  9. 如何安装并使用Windows 8 Client Hyper-V
  10. jconsole工具使用----jvm内存泄漏问题