关于c语言按位取反的运算

表达式~0x11的值是()在计算的时候,是应该把十六进制的0x11转换成十进制17,然后再转换成二进制10001,按位取反为01110,再转换成十进制为14,不应该是0x... 表达式~0x11的值是()
在计算的时候,是应该把十六进制的0x11转换成十进制17,然后再转换成二进制10001,按位取反为01110,再转换成十进制为14,不应该是0xE 么?答案给的是0xFFEE,请问是怎么计算的啊?我的理解是不是有错误啊?
谢谢大家
展开
 我来答
火虎生活小达人
高能答主

2020-12-15 · 致力于成为全知道最会答题的人
知道大有可为答主
回答量:5246
采纳率:100%
帮助的人:168万
展开全部

两者都为1为1,否则为0。

1&1=1,1&0=0,0&1=0,0&0=0

或运算:|

两者都为0为0,否则为1

1|1=1,1|0=1,0|1=1,0|0=0

非运算:~

1取0,0取1

~1=0,~0=1

~(10001)=01110

异或运算

两者相等为0,不等为1

1^1=0,1^0=1,0^1=1,0^0=0

扩展资料:

位运算符有:

&(按位与)、|(按位或)、^(按位异或)、~(按位取反)。

其中,按位取反运算符是单目运算符,其余均为双目运算符。

位运算符的优先级从高到低,依次为~、&、^、|,

其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符。

兔子和小强
2012-08-07 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1431万
展开全部
十六进制转化为2进制不用这么做,
将每位十六进制变成4位二进制即可,所以
11(16) = 0001 0001(2)
~0x11 这个0x11是整型常量
所以 = ~0x 0011
= 0xFFEE
追问
谢谢你哈!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuchenyong119
2012-08-07 · TA获得超过265个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:169万
展开全部
0x11=0x0011= 0000 0000 0001 0001(不用转成十进制再转二进制,太麻烦,一个16进制的位直接转成四位二进制的位就可以了)
再取反就得到1111 1111 1110 1110即0xFFEE
问题的关键是要把位补齐了,前面的0不能省了呀
更多追问追答
追问
谢谢你哈,我还想问的是,为什么转换的时候要将原来的两位的十六进制0x11变为四位0x0011来表示,再进行转换啊?
追答
和你细说吧,四位二进制数,比如1111,是不是就是十进制的15,也就是16进制的F,习惯了,2的四次方是16,所以就是四位二进制就表示一个16进制的位。习惯了就知道了  十六进制的ABCDEF对应二进制的1010 1011 1100 1101 1110 1111

同理,三位二进制可以表示一个八进制数。

但要记得从低位开始,高位不足的先补0
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式