19#ayb_ice
首先,对于bit定义的位变量,使用按位取反“~”符号肯定没错,因为下面的四张程序代码就是对bit变量进行“~”操作,而结果都是对的。而且经过跟踪汇编代码,我发现对位变量的按位取反操作其实是使用取补指令“CPL C”完成的——这很自然,我认为任何C51的编译器都会把对位变量的按位取反“~”操作编译成取补指令“CPL”的。而对于CPL的作用,8051指令集上有这样的功能描述:Description: CPL complements operand, leaving the result in operand. If operand is a single bit then the state of the bit will be reversed.
可见,对于位变量(bit变量)进行“~”操作肯定是没有任何问题的。