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%8
是i
除以8的余数
对于行走零点,补充模式:
uint8_t walkZero = ~(1u << i%8);
我是一名学生,用了几年 C 语言,但没有固定的时间练习这门语言。我正在尝试对一个字节执行步行测试和步行零测试并且非常卡住,任何提示将不胜感激。
我有两个问题。
1) 如何进行走零步?
2) 如何在 C 中通过进位(或左)执行右循环?
我编写了一个行走的一位代码,虽然这不会在第 0 位进行循环和重新启动
int8_t walkOne = 1;
walkOne <<= 1;
零距离行走: ??
我知道一定有更好的方法可以做到这一点,有人能帮忙吗?
此致
C不提供任何旋转操作。但是,您不需要一个。要为步骤 i
准备步行值,只需将一位移动 i % 8
位:
uint8_t walkOne = 1u << i%8;
i%8
是i
除以8的余数
对于行走零点,补充模式:
uint8_t walkZero = ~(1u << i%8);