在c语言的逻辑运算中3‖2为什么等于1呢

如题所述

逻辑运算,结果只有0和非0,非0即为1.
而参与逻辑运算的数值,同样是判断0或非0,所有非0数值都是按照1来处理。追问

哦,原来是这样啊!谢谢你

那你知道位运算中的取反运算~0为什么等于-1呢

刚学c语言的小菜鸟一只

追答

~ 是位运算。逻辑运算和位运算完全是两种不同的方法。
初学者,要首先分清三类运算:数值运算、逻辑运算、位运算。每种运算都有自己的特殊之处,如果混淆了,很容易懵。

追问

可是位运算中的取反不应该是~0=1呢?为什么又是-1呢?

追答

位运算,是16进制运算,或者说二进制运算。因为计算机就是以二进制存储。
-1的实际存储是0xffff,每一位都是1,位取反运算是全0,就是0.

追问

那要是按二进制运算的话,-1的实际存储是10000001,取反后不就是01111110吗?

追答

负数是补码存储,-1在内存中,为全1.
建议仔细看看书,位运算的基础知识很重要。

追问

哦哦,我去翻翻书去

温馨提示:答案为网友推荐,仅供参考
相似回答