C - 行走一和零测试,通过进位旋转

C - Walking one and zero test, rotating through carry

我是一名学生,用了几年 C 语言,但没有固定的时间练习这门语言。我正在尝试对一个字节执行步行测试和步行零测试并且非常卡住,任何提示将不胜感激。

我有两个问题。

1) 如何进行走零步?

2) 如何在 C 中通过进位(或左)执行右循环?

我编写了一个行走的一位代码,虽然这不会在第 0 位进行循环和重新启动

int8_t walkOne = 1;
walkOne <<= 1;

零距离行走: ??

我知道一定有更好的方法可以做到这一点,有人能帮忙吗?

此致

C不提供任何旋转操作。但是,您不需要一个。要为步骤 i 准备步行值,只需将一位移动 i % 8 位:

uint8_t walkOne = 1u << i%8;

i%8i除以8的余数

对于行走零点,补充模式:

uint8_t walkZero = ~(1u << i%8);