Lässt sich dieser Ausdruck irgendwie einfacher schreiben?

  • Themenstarter Themenstarter Ausdrücke
  • Beginndatum Beginndatum
A

Ausdrücke

Gast
Lässt sich dieser Ausdruck irgendwie einfacher schreiben:
Java:
System.out.println((t2 - t1) - (t3 - t2));
=>
Java:
System.out.println(2 * t2 - t1 - t3);
?

Evtl. t2 << 1? t1,t2,t3 sind Ganzzahlen.
 
Ein Leftshift 1 würde aber doch "performanter" sein.

Es geht darum habe 3 Messpunkte, nach Messpunkt 1 und 2 wird ein Abschnitt ausgeführt.

Entspricht 2*a denn immer a<<1 (und umgekehrt) oder kann es dann Probleme mit negativen Zahlen auftreten?
 
Beim Leftshift treten die selben Probleme wie bei der normalen Multiplikation auf... Überläufe.
So sind z.B die Bytewerte -191 (65) * 2 und auch -191 << 1 in beiden Fällen -126.
 
Zuletzt bearbeitet von einem Moderator:
Ja logo, wenn die Bits ins Signbit geschoben werden, dann wird aus der positiven Zahl eine negative.
Das passiert mit den falschen Zahlen aber so und so. Da hilft nur eine zeitaufwändige Überprüfung.

Die Beschränkung ist hier der Datentyp, der verwendet wird.
Man könnte nach dem a << 1 auf a & 2.147.483.648 testen (int hat 4 Byte), wenn es nachher 1 ist und vorher nicht, hattest Du einen Überlauf.

Pentalon
 

Neue Themen


Zurück
Oben