永发信息网

以下代码: unsigned char a=0xa5; unsigned char b=~a >>1+2+3; 求b等于多少? 请写出具体过程

答案:3  悬赏:50  手机版
解决时间 2021-04-07 12:02
以下代码: unsigned char a=0xa5; unsigned char b=~a >>1+2+3; 求b等于多少? 请写出具体过程
最佳答案
调试了好久终于知道为什么了.

我们先看看编译器是如何编译的

not是按位取反
sar是右移 0x6也就是右移六位
但是我怎么算都是不会是fd, 这就很气╭(╯^╰)╮
然后我把代码改了下
#include "stdio.h"

int main(int argc, char const *argv[]) {
    unsigned char a = 0xa5;
    printf ( "%0x", ~a );   //显示ffffff5a
    unsigned char b = (~a) >> ( 1 + 2 + 3);

    printf ( "
%0x  %0x", b, 0xffffff5a >> 6  ); //显示fd  3fffffd
    return 0;
}
这下就很明了了.
一开始编译器把无符号char类型的a升为32位的类型(比如int?) 进行了按位取反得到的结果ffffff5a, 然后右移六位再降为八位的无符号char类型, 也就是最后八位0xfd赋值给b

呼, 给个采纳好么QwQ

全部回答
真不知道为什么要这样设计,而且还出这样的题目很明显如果从C语言的角度应该汇编代码不应该放在eax里面的,应该要放在al里面的,这样才符合逻辑,不然就是设计上面的bug,看了汇编语言感觉太坑了
b==0xfd。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
久安路/邾城街(路口)怎么去啊,有知道地址的
被舍友孤立怎么办?
公权和私权的区别,社会治理中公权与私权的冲
父亲姓陈母亲姓叶儿子出生2007年1月15日名叫
足球大师托尼什么评级
dnf怎么做幸福恋人称号
把屏幕刷新频率调到75赫兹有什么副作用
綦江到北碚的车是几点的?
单选题He hurried to the sc
周公解梦做梦梦见鱼把人带到水果是什么意思
6.5KW的热水器一小时用多少电..用多大的线合
我想问下这是ipad的几啊
相机索尼a7缺点有哪些
金正兰是什么意思 《法语助手》法汉
DNF女柔道被动觉醒是什么,有什么效果
推荐资讯
怎么样才能渡过魔竭座7月份感情运势
毕业急求 自然科学类出刊快的核心期刊
求小说 男主非人类 女主是人类 男主最好是处
金泰(漳州)铜业公司地址在什么地方,想过去办
请问在李庄能找到下放手工活吗我替加工
孟非开的面馆在南京哪里啊 谢谢
港版小米4和行货小米4有什么区别
华硕M10H和M10F怎么选都是板载wifi吗
中国有嘻哈 欧阳靖说美国见什么意思
为什麼我的多肉不红呢
科技美容效果怎么样
求歌曲 其中一句歌词是 : 你已不在心疼我 是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?