关于取反的符号“~”“!”的疑问

ddoeddoe 2009-04-23 10:31:46
我记得C里面有个取反的符号,按位取反“~”,还有个是非“!”,这两个什么区别?
...全文
16847 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenqianzeng 2012-08-09
  • 打赏
  • 举报
回复
11111010怎么就是-6的啊?怎么得出来啊?刚刚接触c语言
jia611 2010-09-04
  • 打赏
  • 举报
回复
笔试的时候忘记了,郁闷!
liuxu2559 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xmanlin 的回复:]
~是按位取反,二进制0变1,1变0. !是逻辑取反, false变true,true变false
[/Quote]
UP
lingyin55 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 ddoeddoe 的帖子:]
我记得C里面有个取反的符号,按位取反“~”,还有个是非“!”,这两个什么区别?
[/Quote]

这两个什么区别?
~是对位操作,0变1,1变0.
!是对一个值操作,非0值变0。
记住是否对位操作就可以区别它们了。
xmanlin 2009-04-23
  • 打赏
  • 举报
回复
~是按位取反,二进制0变1,1变0. !是逻辑取反, false变true,true变false
Lovegarfield 2009-04-23
  • 打赏
  • 举报
回复
取反是按位取反1变0,0变1.和!他两之间八竿子都打不到的关系啊!
arong1234 2009-04-23
  • 打赏
  • 举报
回复
~是按位取反,例如整数3,二进制形式是
00000000000000000000000000000011,按位取反后就是
11111111111111111111111111111100

!是逻辑否,一个非0数取否之后就是0,上面的3,用!之后就是0

也就是说,所有的不是0的数用!操作后都是0,只有当操作数等于0xFFFFFFFF的,用!和~的结果值才是一样的
yangqidong 2009-04-23
  • 打赏
  • 举报
回复
!用于把真变假,假变真,在C中,只要不是0就是真
所以
!5值是0
~按位取反
5二进制00000101,取反11111010,代表-6
所以~5值-6

garysoft 2009-04-23
  • 打赏
  • 举报
回复
呵呵...
1楼就没错了..
liliangbao 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangqidong 的回复:]
!用于把真变假,假变真,在C中,只要不是0就是真
所以
!5值是0
~按位取反
5二进制00000101,取反11111010,代表-6
所以~5值-6
[/Quote]
Up~
  • 打赏
  • 举报
回复
取反是对位进行求反操作.

而!本质是对true和 false的转换.
Skyhoo 2009-04-23
  • 打赏
  • 举报
回复
按位去反是 按照原来保存在内存中的2进制取反,! 是非的意思 逻辑运算符
晨星 2009-04-23
  • 打赏
  • 举报
回复
!实质上只在“真”和“假”之间反转。
而~是操作数值的每一个二进制位。
ForestDB 2009-04-23
  • 打赏
  • 举报
回复
!是逻辑取反。
~是按位取反。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧