请高人帮忙将这个Java语句翻译成Delphi版本语句(100分)

  • 主题发起人 主题发起人 Awen.ZW.Yang
  • 开始时间 开始时间
A

Awen.ZW.Yang

Unregistered / Unconfirmed
GUEST, unregistred user!
private long testabc(long l)
{
long l1 = (l << 79 ^ l) & 0xaaaaaaaa00000000L;
l ^= l1 >>> 22 | l1;
return l;
}
 
function rip( l :int64):int64
var
l1:int64
begin
l1=((l shl 38) not l) or $aaaaaaaa00000000l
l= (l1 shr 22 or l1 ) not l
result:=l
end;
简单的对应翻译了一下,没有测试
 
0xaaaaaaaa00000000L =? $aaaaaaaa00000000l
$aaaaaaaa00000000l编译错误
 
应该是
$aaaaaaaa00000000
 
JAVA 位运算符
^ 按位异或(XOR)
>> 右移
>>> 右移,左边空出的位以0填充

在楼上的基础上修改一下:
function testabc(l :int64):int64;
var
l1:int64;
begin
l1 := ((l shl 38) XOR l) or $aaaaaaaa00000000;
l := (l1 shr 22 or l1 ) XOR l;
result:=l
end;
 
做人要厚道, 问题解决为什么还不结贴
 
OK,TKS!
 
OK,TKS!
 
后退
顶部