Delphi循环移位操作

如果在X86计算机上很简单,直接内嵌汇编ror和rol指令就是循环移位.
但是如果在Android的平台上,asm关键字是无效的.
只能自己实现.

function ror(const Value: DWORD; ShiftValue: Byte): DWORD; overload;
begin
Result := (Value shl (8 * SizeOf(Value) – ShiftValue)) or
(Value Shr ShiftValue);
end;

function ror(const Value: WORD; ShiftValue: Byte): DWORD; overload;
begin
Result := (Value shl (8 * SizeOf(Value) – ShiftValue)) or
(Value Shr ShiftValue);
end;

function ror(const Value: Byte; ShiftValue: Byte): DWORD; overload;
begin
Result := (Value shl (8 * SizeOf(Value) – ShiftValue)) or
(Value Shr ShiftValue);
end;

function rol(const Value: DWORD; ShiftValue: Byte): DWORD; overload;
begin
Result := (Value shr (8 * SizeOf(Value) – ShiftValue)) or
(Value Shl ShiftValue);
end;

function rol(const Value: WORD; ShiftValue: Byte): DWORD; overload;
begin
Result := (Value shr (8 * SizeOf(Value) – ShiftValue)) or
(Value Shl ShiftValue);
end;

function rol(const Value: Byte; ShiftValue: Byte): DWORD; overload;
begin
Result := (Value shr (8 * SizeOf(Value) – ShiftValue)) or
(Value Shl ShiftValue);
end;

举例子:
a := ror(DWORD(1), 1);
注意第一个参数因为给的是常量1,如果不指明类型会按最小的来,也就是会被当成Byte的.

如果是C++用模板不必重载写两个函数就够了.而象Delphi/C#/Java的泛型没法做到这个.
因为C++的泛型是编译时替换的,完全没有类型信息.
而后三种语言首先你要把T做移位就会编译不过.

此条目发表在Delphi, 未分类分类目录。将固定链接加入收藏夹。

Delphi循环移位操作》有 25 条评论

  1. 匿名说:

    厉害,学习了

  2. 匿名说:

    大牛好久没发论文了,今天终于等到了,向大牛学习,以后能不能多发一些学习学习,特别是移动开发,谢谢,向大牛致敬!!!!!!

  3. 匿名说:

    能不能联系我?说不定有些项目我们可以合作一下。QQ617245489,谢谢!

  4. Pingback引用通告: 43ytr.icu/j/GPoAr

  5. Pingback引用通告: abisko.ru

  6. Pingback引用通告: glyxar.ru

  7. Pingback引用通告: wwin-tv.com

  8. Pingback引用通告: hs;br

  9. Pingback引用通告: tureckie_serialy_na_russkom_jazyke

  10. Pingback引用通告: tureckie_serialy

  11. Pingback引用通告: 00-tv.com

  12. Pingback引用通告: +1+

  13. Pingback引用通告: æóêè+2+ñåðèÿ

  14. Pingback引用通告: Ñìîòðåòü ñåðèàëû îíëàéí âñå ñåðèè ïîäðÿä

  15. Pingback引用通告: Ñìîòðåòü âñå ñåðèè ïîäðÿä

  16. Pingback引用通告: watch

  17. Pingback引用通告: ++++++

  18. Pingback引用通告: HD-720

  19. Pingback引用通告: guardians+of+the+galaxy+2

  20. Pingback引用通告: strong woman do bong soon

  21. Pingback引用通告: my id is gangnam beauty

  22. Pingback引用通告: 2020

  23. Pingback引用通告: kpop+star+season+6+ep+9

  24. Pingback引用通告: Video

  25. Pingback引用通告: 1 2 3 4 5 6 7 8 9 10

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

你必须启用JavaScript