如何求一个int型数的绝对值?问题如题:要求:1、不得使用任何API,如Math.abs()等。2、不得使用判断语句,如if、fo
如何求一个int型数的绝对值?
问题如题:
要求:
1、不得使用任何API,如Math.abs()等。
2、不得使用判断语句,如if、for、while、switch、?:等。
3、不得使用比较语句,如:==、<=、>=、!=、<、>等。
请看清要求。
[解决办法]
i = (1 - (i>>>31)) * i - (i>>>31) * i
[解决办法]
[解决办法]
贴好看点。。。
- Java code
public class TestAbs { public static void main(String args[]){ int temp = - 8; int out = temp; temp = temp >> 31; out = out ^ temp; out = out - temp; System.out.println(out); }}
[解决办法]
- Java code
public static int abs(int num) { return num * (1 - ((num >>> 31)<<1)); }
[解决办法]
1,3,13楼的一样的.
类似的还有:num*(1-((num&0X80000000)>>>30))
略有不同的是:
(num^-(num>>>31))+(num>>>31) 