c语言中!与~有什么区别?最好举例说明

2024-06-14 22:03:24 浏览

c语言中,!和~均表示取反,这两个的区别在于:

中与有什么区别?最好举例说明

! :代表逻辑取反,即:把非0的数值变为0,0变为1;

~ :表示按位取反,即在数值的二进制表示方式上,将0变为1,将1变为0;

上述其实可以从Java中进行借鉴理解,java中!代表逻辑取反,针对的是boolean型值计算;而~代表数值取反,针对整型值进行计算。

有符号数的表示方法是由硬件决定,而不是由C决定的。有三种表示方法:

这个方法有个缺点是有两个零: +0 和 -0。这会引起混淆,而且用两个位组合来表示一个值也有些浪费

2、二进制补码(最普遍的系统)

1)如果是无符号字节, 1000 0000 该组合为 128

2)如果是有符号字节, 1000 0000 该组合为 -128

第一种表示数的范围是 0 ~ 255;

第二种表示数的范围是 -128 ~ +127,对于一个二进制补码数取负数,最简单的方法就是取反、加 1。

通过反转位组合中的每一位以形成一个数的负数,例如:

这种方式也有一个 -0:1111 1111。其范围是 -127 ~ +127。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。