Negative Werte
negativ bedeutet < 0
<= 0 ist nicht-positiv
Negative Werte bei Vergleichen
-10 < -5
Negative Werte bei der ganzzahligen Division
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( 5/2 );
java.lang.System.out.println( -5/2 ); }}
2
-2
Rundet in Richung zu Null. Dadurch ergibt sich ein Sprung bei 0:
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( 5/2 ); /* 2 */
java.lang.System.out.println( 3/2 ); /* 1 */
java.lang.System.out.println( 1/2 ); /* 0 */
java.lang.System.out.println( -1/2 ); /* 0 */
java.lang.System.out.println( -3/2 ); /* -1 */
java.lang.System.out.println( -5/2 ); /* -2 */ }}
In Java wird bei der ganzzahligen Division in Richtung Null gerundet (trunc, nach Wirth)
Knuth beschreibt eine Division, bei welcher immer abgerundet wird (floor, nach Knuth).
Negative Werte bei der Restoperation
In Java hat der Rest immer das Vorzeichen des Dividenden.
Bei der Knuth-Division hat der Rest das Vorzeichen des Divisors, dies ist dann wohl auch die mathematische Modulo-Operation.
Es gilt in jedem Fall: Dividend = Divisor · Quotient + Rest
So ergibt sich der Rest aus den Regeln für die Division.
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( 5%2 ); /* 1 */
java.lang.System.out.println( 3%2 ); /* 1 */
java.lang.System.out.println( 1%2 ); /* 1 */
java.lang.System.out.println( -1%2 ); /* -1 */
java.lang.System.out.println( -3%2 ); /* -1 */
java.lang.System.out.println( -5%2 ); /* -1 */ }}
Um zu testen, ob eine Zahl ungerade ist, kann man also nicht einfach testen, ob der Rest gleich 1 ist!