关于c语言按位取反的运算
表达式~0x11的值是()在计算的时候,是应该把十六进制的0x11转换成十进制17,然后再转换成二进制10001,按位取反为01110,再转换成十进制为14,不应该是0x...
表达式~0x11的值是()
在计算的时候,是应该把十六进制的0x11转换成十进制17,然后再转换成二进制10001,按位取反为01110,再转换成十进制为14,不应该是0xE 么?答案给的是0xFFEE,请问是怎么计算的啊?我的理解是不是有错误啊?
谢谢大家 展开
在计算的时候,是应该把十六进制的0x11转换成十进制17,然后再转换成二进制10001,按位取反为01110,再转换成十进制为14,不应该是0xE 么?答案给的是0xFFEE,请问是怎么计算的啊?我的理解是不是有错误啊?
谢谢大家 展开
3个回答
展开全部
展开全部
十六进制转化为2进制不用这么做,
将每位十六进制变成4位二进制即可,所以
11(16) = 0001 0001(2)
~0x11 这个0x11是整型常量
所以 = ~0x 0011
= 0xFFEE
将每位十六进制变成4位二进制即可,所以
11(16) = 0001 0001(2)
~0x11 这个0x11是整型常量
所以 = ~0x 0011
= 0xFFEE
追问
谢谢你哈!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0x11=0x0011= 0000 0000 0001 0001(不用转成十进制再转二进制,太麻烦,一个16进制的位直接转成四位二进制的位就可以了)
再取反就得到1111 1111 1110 1110即0xFFEE
问题的关键是要把位补齐了,前面的0不能省了呀
再取反就得到1111 1111 1110 1110即0xFFEE
问题的关键是要把位补齐了,前面的0不能省了呀
更多追问追答
追问
谢谢你哈,我还想问的是,为什么转换的时候要将原来的两位的十六进制0x11变为四位0x0011来表示,再进行转换啊?
追答
和你细说吧,四位二进制数,比如1111,是不是就是十进制的15,也就是16进制的F,习惯了,2的四次方是16,所以就是四位二进制就表示一个16进制的位。习惯了就知道了 十六进制的ABCDEF对应二进制的1010 1011 1100 1101 1110 1111
同理,三位二进制可以表示一个八进制数。
但要记得从低位开始,高位不足的先补0
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询