Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mal wieder Java -> Delphi (Operator >>>) (https://www.delphipraxis.net/137618-mal-wieder-java-delphi-operator.html)

WorstNightmare 24. Jul 2009 11:23


Mal wieder Java -> Delphi (Operator >>>)
 
Hallo,

ich übersetze gerade mal wieder eine Java-Klasse nach Delphi. Bisher hatte ich eigentlich keine Probleme, aber jetzt wird der Operator >>> (Rechts-Shift positiv) verwendet. In Delphi kenne ich nur shl und shr, was ist bei dem Operator anders?

Code:
  ret_value = ret_value >>> 0x1d;

Zacherl 24. Jul 2009 11:25

Re: Mal wieder Java -> Delphi (Operator >>>)
 
Wieso sollte was anders sein? Ich würde SHR() verwenden ..

WorstNightmare 24. Jul 2009 11:27

Re: Mal wieder Java -> Delphi (Operator >>>)
 
Zitat:

Zitat von Zacherl
Wieso sollte was anders sein? Ich würde SHR() verwenden ..

Wenn es keinen Unterschied geben würde, warum wird dann nicht gleich >> sondern >>> verwendet?

Apollonius 24. Jul 2009 11:31

Re: Mal wieder Java -> Delphi (Operator >>>)
 
>>> wird in Java benötigt, weil es dort keine vorzeichenlosen Datentypen gibt. >>> entspricht einem Shift, allerdings wird der Datentyp als vorzeichenlos interpretiert:
Code:
0x80000000 >> 1 = 0xC0000000
0x80000000 >>> 1 = 0x40000000
Da es in Delphi vorzeichenlose Datentypen gibt, kannst du einfach entsprechend casten und dann shr verwenden.

Klaus01 24. Jul 2009 11:32

Re: Mal wieder Java -> Delphi (Operator >>>)
 
Hier habe ich folgendes gefunden:

Zitat:

So what about the >>> ( unsigned right shift ) operator ?

Sometimes we may require a right shift ( >> ) but we wouldn't like it to fill one's , instead we'd like it to fill zero's & only zero's no matter what . This is where the >>> ( unsigned right shift ) operator fits in .

It fills the void left behind by the leftmost bits with zero's only . So -
78 >>> 2 = 19 &
-78 >>> 2 = 1073741804 Try here.
Eine Entsprechung in Delphi ist mir nicht bekannt.

Grüße
Klaus

WorstNightmare 24. Jul 2009 11:35

Re: Mal wieder Java -> Delphi (Operator >>>)
 
Danke für die Erklärung :)

Also würde es sowas tun?

Delphi-Quellcode:
var
  Res: Integer;
begin
  [...]
  Res := Cardinal(Res) shr $1D;
end;

Apollonius 24. Jul 2009 11:37

Re: Mal wieder Java -> Delphi (Operator >>>)
 
Ja.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz