programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
• Campbell Ritchie
• Devaka Cooray
• Ron McLeod
• Paul Clapham
• Liutauras Vilda
Sheriffs:
• paul wheaton
• Jeanne Boyarsky
• Tim Cooke
Saloon Keepers:
• Stephan van Hulst
• Tim Holloway
• Tim Moores
• Mikalai Zaikin
• Carey Brown
Bartenders:

# Where am I wrong??

Ranch Hand
Posts: 435
• • Number of slices to send:
Optional 'thank-you' note:
• • Options:
A: true true true true
B: true false true true
C: true true true false
D: false false false true
I tried running the program and the output was b).
I feel that min value of byte is -127 which is less than 0 hence false should be the first part..correct me
I am not able to understand how can we get such an output.
Sonir

Ranch Hand
Posts: 203
• • Number of slices to send:
Optional 'thank-you' note:
• • Sonir :
What does Math.abs() do ?

sonir shah
Ranch Hand
Posts: 435
• • Number of slices to send:
Optional 'thank-you' note:
• • Returns an Absolute value.
Sonir

Ranch Hand
Posts: 417
• • Number of slices to send:
Optional 'thank-you' note:
• • it gives you the abosolute value of a number
like for -5 abs value would be 5
for -.0075 abs value would be .007
and so on....

Originally posted by Shivaji Marathe:
Sonir :
What does Math.abs() do ?

Shivaji Marathe
Ranch Hand
Posts: 203
• • Number of slices to send:
Optional 'thank-you' note:
• • Sonir :
If you know what math.abs() returns , then you know that abs() of any negative number is it's positive value - do you not?

Originally posted by sonir shah:
Returns an Absolute value.
Sonir

Shivaji Marathe
Ranch Hand
Posts: 203
• • Number of slices to send:
Optional 'thank-you' note:
• • Actually I am surprised that math.abs(Long.min_value ) prints a negative number. Is this a normal behavior or is this an " un documented feature?"

mark stone
Ranch Hand
Posts: 417
• • Number of slices to send:
Optional 'thank-you' note:
• • they should all be true ? right ?
why is Long.min_value giving false ?

Originally posted by Shivaji Marathe:
Actually I am surprised that math.abs(Long.min_value ) prints a negative number. Is this a normal behavior or is this an " un documented feature?"

Ranch Hand
Posts: 1873
• • Number of slices to send:
Optional 'thank-you' note:
• • hi sonir,
the problem here is this.
as per API says, when the value is MIN_VALUE and the datatype is int or long then it crosses the limit if we make it +ve as there is one number less in +ve than in +ve. so, when we do that it wraps the number again and make it -ve.
thus, comparision to >0 returns false.
for byte & short there is no method in Math.abs() list. so short and byte are first converted to int and then it works. here Byte.MIN_VALUE is -128 but still it works as it is fully representable in int. same for short. and so making them abs() returns int > 0.
however, if we had Integer.MIN_VALUE or Long.MIN_VALUE then it would return the same number which is -ve due to the reason explained above.
this reasoning doesnt apply to float and double. as the Float.MIN_VALUE is +/-1.4E-45 and similar thing for double. so, when u apply abs() to Float.MIN_VALUE or Double.MIN_VALUE it gives u the +ve number and >0 comparison is true.
so, u get results u r having.
regards
maulin.

mark stone
Ranch Hand
Posts: 417
• • Number of slices to send:
Optional 'thank-you' note:
• • mauline i don;t get this why all are not true...

hi sonir,
the problem here is this.
as per API says, when the value is MIN_VALUE and the datatype is int or long then it crosses the limit if we make it +ve as there is one number less in +ve than in +ve. so, when we do that it wraps the number again and make it -ve.
thus, comparision to >0 returns false.
for byte & short there is no method in Math.abs() list. so short and byte are first converted to int and then it works. here Byte.MIN_VALUE is -128 but still it works as it is fully representable in int. same for short. and so making them abs() returns int > 0.
however, if we had Integer.MIN_VALUE or Long.MIN_VALUE then it would return the same number which is -ve due to the reason explained above.
this reasoning doesnt apply to float and double. as the Float.MIN_VALUE is +/-1.4E-45 and similar thing for double. so, when u apply abs() to Float.MIN_VALUE or Double.MIN_VALUE it gives u the +ve number and >0 comparison is true.
so, u get results u r having.
regards
maulin.

sonir shah
Ranch Hand
Posts: 435
• • Number of slices to send:
Optional 'thank-you' note:
• • Maulin,
Even I am not clear why is it giving false for the second one..
Can you give me some examples??
Sonir

Ranch Hand
Posts: 1873
• • Number of slices to send:
Optional 'thank-you' note:
• • hi sonir,
say u have 4-bit capacity registers. so we can have -2^3-1 to +2^3 numbers that is [-8,7] (keep it int tho).
why so? how do v decide -ve limit?
simple. comp uses 2's complement. so startout writing +ve numbers from 0 along with it's -ve equvivalent.
0 = 0000 , -0 = 0000 (which isnt really there. so we will discard -0)
1 = 0001 , -1 = 1111
2 = 0010 , -2 = 1110
3 = 0011 , -3 = 1101
4 = 0100 , -4 = 1100
5 = 0101 , -5 = 1011
6 = 0110 , -6 = 1010
7 = 0111 , -7 = 1001
so far as u can see all the -ve have 1 as Most Significant Bit (MSB). so that should mean that when we try to represent +ve 8 = 1000 it is not +ve but -ve.
so, we have +7 max and -8 min but dont have +8.
now, when we take abs() of any -ve value see what happens,
e.g. -3 = 1101. we can just do that by taking 2's complement which would be 0011 = 3. right?
now take -8 = 1000. get 2's complement. result is 1000 = -8 !!!
so, MIN_VALUE will result into the same value for int and long for this reason. and so if we do comparison with 0 it will be false for (number > 0).
hope u got this.
regards
maulin.

Shivaji Marathe
Ranch Hand
Posts: 203
• • Number of slices to send:
Optional 'thank-you' note:
• • Thanks Maulin. I get it. very tricky Q. Don't play dumb with me! But you can try this tiny ad: a bit of art, as a gift, the permaculture playing cards https://gardener-gift.com