int new_x = Math.abs(x - (4 * scr_x) / z) % 1000;
int x = -123;
int last = x & 0xFFFF;
int first = x >> 16 & 0xFFFF;
long y = (long)first << 16 | last;
System.out.println( "int: " + Integer.toBinaryString( x ) );
System.out.println( "long: " + Long.toBinaryString( y ) );
int mzahl = -100;
System.out.println("Ori: " + Integer.toBinaryString(mzahl));
mzahl = Math.abs(mzahl);
System.out.println("mod: " + Integer.toBinaryString(mzahl));
mzahl = -100;
System.out.println("Ori: " + Integer.toBinaryString(mzahl));
mzahl *= -1;
System.out.println("mod: " + Integer.toBinaryString(mzahl));
int last = mzahl & 0xFFFF;
int first = mzahl >> 16 & 0xFFFF;
long yyy = (long)first << 16 | last;
System.out.println("Beni1: " + Integer.toBinaryString(last));
System.out.println("Beni2: " + Long.toBinaryString(yyy));
Ausgabe hat gesagt.:Ori: 11111111111111111111111110011100
mod: 1100100
Ori: 11111111111111111111111110011100
mod: 1100100
Beni1: 1100100
Beni2: 1100100
int mzahl = -123;
System.out.println("Ori: " + Integer.toBinaryString(mzahl));
mzahl = Math.abs(mzahl);
System.out.println("mod: " + Integer.toBinaryString(mzahl));
mzahl = -123;
System.out.println("Ori: " + Integer.toBinaryString(mzahl));
mzahl *= -1;
System.out.println("mod: " + Integer.toBinaryString(mzahl));
mzahl = -123;
int last = mzahl & 0xFFFF;
int first = mzahl >> 16 & 0xFFFF;
long yyy = (long)first << 16 | last;
System.out.println("Beni1: " + Integer.toBinaryString(last));
System.out.println("Beni2: " + Long.toBinaryString(yyy));
yyy = mzahl * 0xFFFFFFFFL;
System.out.println("stev: " + Long.toBinaryString(yyy));
Ausgabe hat gesagt.:Ori: 11111111111111111111111110000101
mod: 1111011
Ori: 11111111111111111111111110000101
mod: 1111011
Beni1: 1111111110000101
Beni2: 11111111111111111111111110000101
stev: 1111111111111111111111111000010100000000000000000000000001111011
// hier sollte nicht "last" sondern "mzahl" eingetragen sein.
System.out.println("Beni1: " + Integer.toBinaryString(last)); // <<<<
System.out.println("Beni2: " + Long.toBinaryString(yyy));
// Und hier nicht * sondern &
yyy = mzahl * 0xFFFFFFFFL; // <<<<<<<
System.out.println("stev: " + Long.toBinaryString(yyy));
Ausgabe von C hat gesagt.:Signed (-123): 11111111111111111111111110000101
Unsigned (4294967173 == -123): 11111111111111111111111110000101
int cmp_int = -123;
printf("\nSigned (%d): ",cmp_int);
for(int i1=0; i1 < 4*8;i1++)
{
if(cmp_int & 0x80000000)
{ printf("1"); }
else
{ printf("0"); }
cmp_int = cmp_int << 1;
}
cmp_int = -123;
unsigned int ucmp_int = (unsigned int) cmp_int;
printf("\nUnsigned (%u == %d): ",ucmp_int,ucmp_int);
for(i1=0; i1 < 4*8;i1++)
{
if(ucmp_int & 0x80000000)
{ printf("1"); }
else
{ printf("0"); }
ucmp_int = ucmp_int << 1;
}