【发布时间】:2011-03-18 05:46:03
【问题描述】:
我正在基于 Delphi(转换代码)在 C# 中制作应用程序,但我发现了一个我不认识的命令 (shl),我想知道是否有任何与 C# 等效的命令。
提前致谢。
【问题讨论】:
标签: c# delphi command equivalent
我正在基于 Delphi(转换代码)在 C# 中制作应用程序,但我发现了一个我不认识的命令 (shl),我想知道是否有任何与 C# 等效的命令。
提前致谢。
【问题讨论】:
标签: c# delphi command equivalent
Shl 是 left shift。使用<< C# operator 达到同样的效果。
示例:
uint value = 15; // 00001111
uint doubled = value << 1; // Result = 00011110 = 30
uint shiftFour = value << 4; // Result = 11110000 = 240
【讨论】:
x << y 也等同于x * 2 to the power of y。同样,x >> y 除以 2 y 次
>> 运算符是算术移位,也就是说,它在无符号类型上从左移0,但在有符号类型上移1,因此它总是除以2、Delphi的shr函数是逻辑移位,总是移入0。 (顺便说一句,这是 C#4 和 Delphi 7 的比较 - 我找不到 Delphi 的shr 的正式定义)。
从Shl Keyword 开始,这是一个向左位移,从C# Bitwise Shift Operators 开始是<<
【讨论】:
Shl 是左移运算符,在 C# 中使用<<。
var
a : Word;
begin
a := $2F; // $2F = 47 decimal
a := a Shl $24;
end;
等同于:
short a = 0x2F;
a = a << 0x24;
【讨论】:
a 是 16 位类型。 C#代码会将a提升为32位类型int,然后将0x24截断为低5位。在这种情况下,它恰好等于低 4 位,但移动了一个使用第五位的量,您应该会看到差异。