我是一名学生,花了几年时间学习C语言,但是没有足够的实践语言的时间。我正在尝试对一个字节执行步进1和步进零测试,并且非常卡住,任何提示将不胜感激。
我有两个问题。
1)我如何执行零走行?
2)如何在C中通过进位(或向左)向右旋转?
我算出了一点点代码,尽管它没有回合并从位0重新开始
int8_t walkOne = 1;
walkOne <<= 1;
零走:
??
我知道一定有更好的方法可以做到这一点吗?
问候
最佳答案
C不提供任何旋转操作。但是,您不需要这样做。要为步骤i
准备行走一的值,只需将一位移位i % 8
位即可:
uint8_t walkOne = 1u << i%8;
当
i%8
除以8时,i
是余数。对于行走零点,请补充模式:
uint8_t walkZero = ~(1u << i%8);