Hallo Zusammen,
ich bin seit einiger Zeit dabei mich nun endlich auch mit JAVA zu beschäftigen.
Dazu versuche ich auch meine "alten" Codeschnippsel in JAVA umzusetzen.
Da es in JAVA ja keine unsigned werte gibt wird ja immer geraten auf größere Datentypen zu gehen. Bei folgendem Code verrechnet sich mein Code immer wieder und ich komm einfach nicht dahinter. Bin mittlerweile bis auf BigInteger umgestiegen um negative werte zu vermeiden.
C# Code
JAVA Versuch
Ich schaffe es nicht in JAVA selbiges Ergebnis zu erzeugen. Hab ich was wichtiges übersehen oder missverstanden. Freue mich über jeden Tip.
Cheerz
Mortiis
ich bin seit einiger Zeit dabei mich nun endlich auch mit JAVA zu beschäftigen.
Dazu versuche ich auch meine "alten" Codeschnippsel in JAVA umzusetzen.
Da es in JAVA ja keine unsigned werte gibt wird ja immer geraten auf größere Datentypen zu gehen. Bei folgendem Code verrechnet sich mein Code immer wieder und ich komm einfach nicht dahinter. Bin mittlerweile bis auf BigInteger umgestiegen um negative werte zu vermeiden.
C# Code
Code:
uint uiInput = 168428516; //0x0a0a03e4;
ulong ulRet = 0;
ulRet = uiInput * (20 * uiInput + 7) / 0x55u + 112;
// Ergebnis 0x0000000001d4f3ec
Code:
long Input = 0x0a0a03e4l;;
long ulRet = 0;
long step1 = 20 * Input + 7;
BigInteger bStep1 = BigInteger.valueOf(step1);
BigInteger step2 = bStep1.multiply(BigInteger.valueOf(Input));
BigInteger step3 = step2.divide(BigInteger.valueOf(0x55));
BigInteger Step4 = step3.add(BigInteger.valueOf(122));
ulRet = Step4.longValue();
System.out.print(ulRet);
Cheerz
Mortiis