zhange 发表于 2024-5-10 15:57:01

C语言中~与!的区别

本帖最后由 zhange 于 2024-5-10 17:15 编辑

! 是逻辑非or否定
​凡是a的值不为0的,!a 就等于0;​如果a的值为0,则 !a 的值为1而~这个是 按位取反
比如 char a=2 ; 用二进制表示为00 00 00 10;
则 !a = 0
而 ~a = 11 11 11 01 (按位取反后的二进制结果,此结果为补码形式)
求其源码为 : 10 00 00 11 即为 -3
所以 ~a 的结果为 -3

soma 发表于 2024-5-10 16:29:17

int在51单片机是16位吧及-32765-32765之间

zhange 发表于 2024-5-10 17:14:13

soma 发表于 2024-5-10 16:29
int在51单片机是16位吧及-32765-32765之间

是    学习偶尔遇到这个问题   复制的别人的      int占4个字节

zhange 发表于 2024-5-10 17:15:22

soma 发表于 2024-5-10 16:29
int在51单片机是16位吧及-32765-32765之间

改成char???

小坤 发表于 2024-5-10 17:23:56

{:lol:}

晓飛飛 发表于 2024-5-10 22:47:50

本帖最后由 晓飛飛 于 2024-5-10 22:49 编辑

a ^= 0xFF是什么效果,别忘了,这个也能取反{:4_249:}
任何数与1进行异或运算,结果取反
页: [1]
查看完整版本: C语言中~与!的区别