逻辑NOT操作未在c中返回期望值?

卢卡利

我正在尝试使用逻辑运算符在0xAA和0x55之间切换。

我知道我可以使用从0xAA更改为0x55 c >> 1,但是我被要求使用逻辑运算符而不是按位运算符来执行此操作,因此我不知道是否要使用>>运算符...

但是我对使用NOT逻辑运算感到有些困惑。

我确定如果我说

unsigned char c = 0xAA;
unsigned char b = !c;

那么b将是0x55。取而代之的是,我得到的输出为0。它不应该将每个单独的位切换为相反的位,给我0x55吗?

感谢帮助。

缺氧

相反,我的输出为0。

逻辑运算符与工作布尔值truefalse

C语言处理的所有非0astrue0as的标量值false逻辑非运算符(!把任何真正的上下的值(即不同于0)到false(即0)。


假设您可以使用算术运算符(加法,乘法,除法),则可以计算输入数字的每一位,使用逻辑非运算符更改其值,然后将这些位重新组合为一个数字,即输入数字的按位非。

例如,cis的最后一位c % 2和(如果您从数字中删除了该位而其他位被移位以填充其位置而剩下的数字)是c / 2(或c >> 1您已经知道的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章