向左旋转就是向右旋转
Rotating left is rotating right
本文关键字:旋转 更新时间:2023-10-16
在c++中,我想使用汇编指令ROL向左旋转一个4个字符的数组。我想我应该把这个数组解释成一个双字,然后把这个双字向左旋转一次,这样就能达到我的目的了。相反,每当我把双字向左旋转一次,它就向右旋转一次。这是我的ASM代码:
ShiftRow proc
; copy array into EAX
MOV EAX, DWORD PTR [RCX]
ROL EAX, 8
MOV DWORD PTR [RDX], EAX
RET
ShiftRow endp
,这就是我的c++代码的样子:
#include <iostream>
using namespace std;
extern "C" void __fastcall RotateArray(const char* Array, char* OutputArray);
int main()
{
char input_array[] = {0x10, 0x20, 0x30, 0x40};
char output_array[4] = {};
RotateArray(input_array, output_array);
for(int i = 0; i < 4; i++)
std::cout << std::hex << (unsigned int)output_array[i] << " ";
cin.get();
}
奇怪的是(对我来说)输出是40 10 20 30,即使我向左移动。有人能解释一下为什么会这样吗?这和端序顺序有关吗?
是的,这是由于端序,而您的机器是一个小端序机器。下面是发生的事情:
input_array before rotation: 10, 20, 30, 40
旋转前的EAX: 40 30 20 10
旋转后的EAX: 30 20 10 40
output_array after rotation: 40, 10, 20, 30
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 发布旋转矩阵(openGL/glm)
- 顺时针迭代旋转 3 位数字
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 子轴围绕父轴而不是他自己的轴旋转
- 将使用太多的纹理插值器 - 带旋转的着色器
- SFML 向下移动时如何围绕屏幕中心旋转?
- 如何在OpenGL中正确旋转和缩放对象?
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 按时间自动旋转形状,同时在 OpenGL 中使用C++移动它们
- 如何使用增强::几何计算多边形的旋转固体体积?
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 如何绕任意轴旋转点?
- 程序仅正确旋转方形图像