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

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

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

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

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

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

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

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

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