TCH (statz) | #1, Főfasz (10466) |
1426 | #5723 | ^ | Idézet | Mon, 06 Mar 2023 22:36:30 +01 |
188.143.*.* | *.pool.digikabel.hu |
Saját kútfőből gondoltam, nem Wikipediából... :P De mindegy, itten az enyimek. Level 1, komparátorral: int signum(int x) { int s = (int)(x < 0); int c = (int)(x > 0); return (c - s) - (c & s); }Level 2, komparátorok nélkül: int signum(int x) { int s = (x >> 31) & 1; int c = ((x & 0x40000000) >> 30) | ((x & 0x20000000) >> 29) | ((x & 0x10000000) >> 28) | ((x & 0x08000000) >> 27) | ((x & 0x04000000) >> 26) | ((x & 0x02000000) >> 25) | ((x & 0x01000000) >> 24) | ((x & 0x00800000) >> 23) | ((x & 0x00400000) >> 22) | ((x & 0x00200000) >> 21) | ((x & 0x00100000) >> 20) | ((x & 0x00080000) >> 19) | ((x & 0x00040000) >> 18) | ((x & 0x00020000) >> 17) | ((x & 0x00010000) >> 16) | ((x & 0x00008000) >> 15) | ((x & 0x00004000) >> 14) | ((x & 0x00002000) >> 13) | ((x & 0x00001000) >> 12) | ((x & 0x00000800) >> 11) | ((x & 0x00000400) >> 10) | ((x & 0x00000200) >> 9) | ((x & 0x00000100) >> 8) | ((x & 0x00000080) >> 7) | ((x & 0x00000040) >> 6) | ((x & 0x00000020) >> 5) | ((x & 0x00000010) >> 4) | ((x & 0x00000008) >> 3) | ((x & 0x00000004) >> 2) | ((x & 0x00000002) >> 1) | ((x & 0x00000001) ) ; return (c - s) - (c & s); } |