我正在读Joel的书,他在那里建议作为面试问题:
编写程序以反转给定字节中的"ON"位.
我只能想到使用C的解决方案.
在这里问,所以你可以告诉我如何以非C方式(如果可能的话)
我主张技巧问题.:)反转所有位意味着触发器,但只有明显的位意味着:
return 0;
具体问题是什么意思?
好问题.如果反转"ON"位意味着仅反转"ON"位,那么无论输入是什么,您总是会得到0.如果它意味着反转所有的位,即将所有1改为0并将所有0改为1,这就是我最初读取它的方式,那么这只是一个按位NOT或补码.基于C的语言有一个补码运算符~
,就是这样做的.例如:
unsigned char b = 102; /* 0x66, 01100110 */ unsigned char reverse = ~b; /* 0x99, 10011001 */