why is 0xFFFFFFFF result different in Java and C?

0

so I have an integer that I want to get rid of negative I'm using signed int in c and int in java because they have the same range

java :

     int y = -697451589;
     int test  = ((y  & 0xFFFFFFFF) >> 8 ) 
     System.out.println(test);

Results:

11111111110101100110110110111011 ( -2724421)

In C :

     int y = -697451589;
     int test  = ((y  & 0xFFFFFFFF) >> 8 ) 
     printf("%d" , test);

Results :

110101100110110110111011 ( 14052795)

why in java the result are different? instead of 0xF is to delete the number 1 in front of the integer? why in java does not erase but in C it erases, I try to use long:

 long y = -697451589;
 long test  = ((y  & 0xFFFFFFFFL) >> 8 ); 
 System.out.println(test);

And it works like C, but I want to use int data not long, does anyone know the solution?

java
c
asked on Stack Overflow Jul 22, 2020 by Atrs

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0