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

2025-01-02 16:32:05
推荐回答(3个)
回答1:

两者都为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

扩展资料:

位运算符有:

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

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

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

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

回答2:

十六进制转化为2进制不用这么做,
将每位十六进制变成4位二进制即可,所以
11(16) = 0001 0001(2)
~0x11 这个0x11是整型常量
所以 = ~0x 0011
= 0xFFEE

回答3:

0x11=0x0011= 0000 0000 0001 0001(不用转成十进制再转二进制,太麻烦,一个16进制的位直接转成四位二进制的位就可以了)
再取反就得到1111 1111 1110 1110即0xFFEE
问题的关键是要把位补齐了,前面的0不能省了呀