C语言的位运算中,~0为什么等于-1呢?怎么不是1呢?

2024-11-29 16:43:03
推荐回答(2个)
回答1:

按位取反,0就是 32个0bit(针对int类型), 取反后是32个1bit即16进制的0xffff_ffff ,而-1==0xffff_ffff,所以0取反就是-1。。。怎么算出来很简单, 计算机中数据是补码形式存储, -1对应的补码是1取反+1, 1取反==0xffff_fffe, 那么再+1就是 0xffff_ffff。。。

回答2:

"~" 是指位元运算.
你要0 => 1, 1=> 0, 这叫做逻辑运算, 应该用 "!"

请再多查查书, 看清楚差异.