依然_范特西_
2016-12-09 01:58
采纳率: 20%
浏览 2.0k

C语言中的逻辑运算,十六进制需要先转二进制再逻辑运算吗

C语言中的逻辑运算(!0x00=0x01),为什么啊?求详细解释(!非,非零表示1/零表示零),结果不应该是0x00吗?在线等,挺急的。。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • AlbertS 2016-12-09 02:03
    已采纳

    0x00 是一个数字0
    而!0x00一个布尔值,即非0表示true
    你如果把一个布尔值true转换成数字就是1
    使用十六机制表示就是0x01

    点赞 评论
  • 天才小熊猫oo 2016-12-09 02:05

    这个貌似要先转换成二进制,从二进制进行运算

    点赞 评论
  • 尚书左仆射 2016-12-09 02:43

    逻辑非将非零转为0,将0转为1.因为非0即为逻辑真,0为逻辑假。

    点赞 评论
  • 依然_范特西_ 2016-12-09 02:56

    那么问题来了,结果为什么要写成0x01而不是0x1呢?是不是什么书写规范给我解释一下

    点赞 评论
  • Ensue 2016-12-09 02:59

    无需转换,不管你是十进制还是十六机制,电脑内部都会转换成二进制来处理。
    所以你你这个是心里问题。不知道你想做什么运算?

    !0x00 的值肯定等于1,你也说了非0表示1.怎么会是0呢?

    点赞 评论
  • 依然_范特西_ 2016-12-09 03:01

    0x代表16进制,一位相当于2进制的4位,计算机存储是一个字节8位的,所以为了表示完一个字节和让人看得更明白一点通常把它写成 0x00

    点赞 评论

相关推荐 更多相似问题