`
emowuyi
  • 浏览: 1509262 次
文章分类
社区版块
存档分类
最新评论

不要小看 b=~a>>4

 
阅读更多

问题的提出:

unsigned char a=0xA5;

unsigned char b=~a>>4;

注意~优先级高于>>,按照逻辑b应该为0x05

而结果b=0xf5,有点不符合逻辑,反编译(VC6,32位)看了一下,发现编译器把上面的代码编译成

mov ecx, dword ptr[ebp-8] ;ecx = 0xcccccca5

and ecx, 0ffh ;ecx = 0x000000a5

not ecx ;ecx = 0xffffff5a

sar ecx, 4 ;ecx = 0xfffffff5(注意移位后用1补齐!!!)

mov byte ptr [ebp-10h], cl ;cl = 0xfff5

反思一下,为了完成b=~a>>4,编译器做了三个工作

(1)申请了一个32位的临时变量x,将a扩展后,存入x

(2)将x取反

(3)将x右移4位,并将移位后x的低8位送给b

在第一步中,存在一个是否按符号位扩展的问题,这里a为unsigned型,不需要扩展,所以x = 0x000000a5;

若a为(signed) char型,则按符号位扩展后,x =0xffffffa5,取反后x = 0x0000005a,最终b=0x05。

下面在看一下关于符号位扩展的反编译代码

unsigned char a1 = 0xA5;

int a2 = a1;

这里扩展不需要补1,应为a1是unsigned类型的,所以编译器将上面代码译为

mov byte ptr [ebp-4], 0A5h

mov eax, dword ptr [ebp-4]

and eax, 0FFh ;eax = 0x000000a5

mov dword ptr [ebp-18h], eax

对于下面的c代码,需要进行符号位扩展

char a1 = 0xA5;

int a2 = a1;

反编译后,可以看到一条movsx带符号扩展指令

mov byte ptr [ebp-4], 0A5h

movsx eax,byte ptr [ebp-4] ;eax = 0xffffffa5

mov dword ptr [ebp-18h],eax

分享到:
评论

相关推荐

    中班音乐节奏乐小看戏.doc

    其次,活动旨在帮助孩子们识别并理解乐曲的ABA结构,这种结构通常由两个相似的部分(A段)和一个不同的部分(B段)组成,是许多传统音乐作品的常见形式。此外,活动还要求孩子们能准确地拍打乐曲的节奏,感知民族...

    你可曾小看运算符?

    例如,如果a = 1,b = 2,那么h = a - b if a > b else a + b会计算为h = a + b,因此h的值为3。 最后,运算符的**优先级**是编程中的重要概念,决定了运算的顺序。优先级高的运算符会先执行,例如,乘法和除法的...

    老板秘书:职位不高小看不得.doc

    7. **建议与策略**:提出让A主任、B副总和柳秘书三人共同组成领导中心,这是一种策略性建议,反映了在复杂组织环境下解决问题的智慧。 8. **晋升与决策**:柳秘书最终被提拔为副总,显示了高层对秘书工作的认可,...

    高考日语小题专项训练(連語1).doc

    4. "僕はその時、なんだか父が涙ぐんでいるような( )。" 意思是“那一刻,我感觉到父亲好像在流泪。”选项C "気が付いた" 表示注意到或察觉到。 5. "引っ越しする時、アパートの主人にあいさつする時、「長い間...

    河北省张家口第一中学2020学年高一语文9月月考试题.doc

    4. 文言虚词用法:题目考察了虚词“以”、“之”、“且”、“而”的不同用法,如“以”作介词(A选项中表示目的关系,B选项中表示结果关系)、“之”作助词(宾语前置标志,B选项中“何厌之有”等于“有何厌”)、...

    (临考储备)2013中考英语复习精品资料 超值阅读练习28 人教新目标版

    总的来说,这篇内容不仅介绍了珊瑚岛的自然地理特征,还寓含了一个深刻的生活哲理:不要小看任何微小的力量,它们可能蕴藏着巨大的潜力。这个故事对于准备中考的考生来说,除了提供语言学习的素材,还可以启发他们...

    江苏省海安高级中学2020学年高二语文6月月考试题.doc

    A项"槲叶落山路,枳花明驿墙"描述的是春天山路上的情景,B项"江流宛转绕芳甸,月照花林皆似霰"描绘的是春天江边的月夜美景,C项"叶上初阳干宿雨,水面清圆,一一风荷举"描绘的是夏日荷花,D项"候馆梅残,溪桥柳细,...

    【高考专题辅导】江苏省2014版高考英语 专题检测卷(十一)句法 第3讲 状语从句

    题意为"不要小看Bob,他在别人软弱的地方很强。" 8. 此题考查地点状语从句,where引导从句置于put it之后,表示"把盒子放在任何你能找到足够空间的地方",正确答案是D。 9. succeed后接地点状语从句,表示在其他...

    从JavaScript数组去重谈性能优化

    JavaScript数组去重经常出现在前端招聘的笔试题里,比如:有数组vararr=['a','b','c','1',0,'c',1,'',1,0],请用JavaScript实现去重函数unqiue,使得unique(arr)返回['a','b','c','1',0,1,'']1.正确。别小看这个考点...

    高中语文《秋水》同步练习苏教版必修三.doc

    - 在课内阅读部分,第6题考查了"之"字的不同用法,A、C、D项是结构助词,B项是音节助词。 - 第8题的C选项有误,原文中河伯的感叹表明他认识到自己之前小看了孔子的学识。 6. **启示与感悟**: - 学习《秋水》的...

    掌握快捷键的用法,让你与众不同

    在IT行业中,快捷键的掌握是提升工作效率的关键因素之一。无论是程序员、设计师还是普通的电脑用户,...所以,不要小看了这些看似不起眼的快捷键,它们在日积月累中会让你的工作变得更为高效,让你在IT世界中与众不同。

Global site tag (gtag.js) - Google Analytics