<分区>
我需要在 C++ 中围绕旋转做一个 3 位左端。
到目前为止我有:
A[i] = (A[i] << 3)|(A[i] >> 5);
A 是一个无符号字符数组。
这是正确的吗?如果不是,我该如何解决?还有什么是最好的测试方法,看看这是否正确?
谢谢
<分区>
我需要在 C++ 中围绕旋转做一个 3 位左端。
到目前为止我有:
A[i] = (A[i] << 3)|(A[i] >> 5);
A 是一个无符号字符数组。
这是正确的吗?如果不是,我该如何解决?还有什么是最好的测试方法,看看这是否正确?
谢谢
最佳答案
我觉得不错。
如果你真的想测试它,手工计算出一堆输入和输出,然后检查你的程序是否产生了它们。
或者设计另一种您绝对确定会产生结果的方法(例如将 unsigned char 转换为二进制字符串,旋转字符串,转换回 unsigned char)并将两者与所有 256 个可能的方法进行比较输入。
关于c++ - 在 C++ 中验证 3 位环绕旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777686/