首页 > 解决方案 > C - 步行一和零测试,通过进位旋转

问题描述

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

我有两个问题。

1) 我如何进行零式行走?

2)如何在 C 中通过进位(或左)执行向右旋转?

我制定了一段步行代码,尽管这不会进行并在位 0 重新启动

int8_t walkOne = 1;
walkOne <<= 1;

零行走:??

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

问候

标签: cbyte-shifting

解决方案


C 不提供任何旋转操作。但是,您不需要一个。要为 step 准备walking-one 值i,只需将a 逐i % 8位移动:

uint8_t walkOne = 1u << i%8;

i%8i是除以八时的余数。

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

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

推荐阅读