unsigned char a=0xd3; a|=0x1f;计算后a的值是多少?

 我来答
沃然网络
2020-03-17 · 百度认证:山东沃然网络科技有限公司官方账号
沃然网络
实体百人团队,app定制,小程序定制开发,网站开发,软件定制,可驻场开发,可接全国!
向TA提问
展开全部

调试了好久终于知道为什么了.

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

not是按位取反

sar是右移 0x6也就是右移六位

但是我怎么算都是不会是fd, 这就很气╭(╯^╰)╮

然后我把代码改了下

12345678910

   

#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 ( "\n%0x  %0x", b, 0xffffff5a >> 6  ); //显示fd  3fffffd    return 0;}

   

这下就很明了了.

一开始编译器把无符号char类型的a升为32位的类型(比如int?) 进行了按位取反得到的结果ffffff5a, 然后右移六位再降为八位的无符号char类型, 也就是最后八位0xfd赋值给b

用电知识分享
2020-04-02 · TA获得超过1831个赞
知道小有建树答主
回答量:841
采纳率:69%
帮助的人:265万
展开全部

#include <stdio.h>


int main(void)

{

    unsigned char a=0xd3; 

    a|=0x1f;


    printf("a=0x%02X", a);

    return 0;

}

测试:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
2020-03-17 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部
转成二进制计算
0xd3=b1101 0011
0x1f=b0001 1111
按位或,只有两个对应位都是0,结果才是0
于是a值是b1101 1111
也就是0xdf
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2020-03-16 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
unsigned char a=0xd3; a|=0x1f;计算后a的值是
0xdf
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式