EDIT 2024/3/25: Updating for completeness.$m is assigned the most significant set bit of 64-bit integer $z, for +the cost of 6 ANDs and 6 truth tests. my $m=-4294967296&$z? -281474976710656&$z? -72057594037927936&$z? -1152921504606846976&$z? -4611686018427387904&$z? -9223372036854775 +808&$z? 4611686018427387904: 2305843009213693952 : -2305843009213693952&$z? 1152921504606846976: 576460752303423488 : -288230376151711744&$z? -576460752303423488&$z? 288230376151711744: 144115188075855872 : -144115188075855872&$z? 72057594037927936: 36028797018963968 : -4503599627370496&$z? -18014398509481984&$z? -36028797018963968& +$z? 18014398509481984: 9007199254740992 : -9007199254740992&$z? 4503599627370496: 2251799813685248 : -1125899906842624&$z? -2251799813685248&$z? 1125899906842624: 562949953421312 : -562949953421312&$z? 281474976710656: 140737488355328 : -1099511627776&$z? -17592186044416&$z? -70368744177664&$z? -1407374 +88355328&$z? 70368744177664: 35184372088832 : -35184372088832&$z? 17592186044416: 8796093022208 : -4398046511104&$z? -8796093022208&$z? 4398046511104: 2199023255552 : -2199023255552&$z? 1099511627776: 549755813888 : -68719476736&$z? -274877906944&$z? -549755813888&$z? 274877906944: 137438953472 : -137438953472&$z? 68719476736: 34359738368 : -17179869184&$z? -34359738368&$z? 17179869184: 8589934592 : -8589934592&$z? 4294967296: 2147483648 : -65536&$z? -16777216&$z? -268435456&$z? -1073741824&$z? -2147483648& +$z? 1073741824: 536870912 : -536870912&$z? 268435456: 134217728 : -67108864&$z? -134217728&$z? 67108864: 33554432 : -33554432&$z? 16777216: 8388608 : -1048576&$z? -4194304&$z? -8388608&$z? 4194304: 2097152 : -2097152&$z? 1048576: 524288 : -262144&$z? -524288&$z? 262144: 131072 : -131072&$z? 65536: 32768 : -256&$z? -4096&$z? -16384&$z? -32768&$z? 16384: 8192 : -8192&$z? 4096: 2048 : -1024&$z? -2048&$z? 1024: 512 : -512&$z? 256: 128 : -16&$z? -64&$z? -128&$z? 64: 32 : -32&$z? 16: 8 : -4&$z? -8&$z? 4: 2 : 2 ;
my $z=17; my $m; { no warnings; ## to suppress warning ## "Hexadecimal number > 0xffffffff non-portable" $m= 0xFFFFFFFF80000000&$z? 0xFFFF800000000000&$z? 0xFF80000000000000&$z? 0xF800000000000000&$z? 0xE000000000000000&$z? 0xC000000000000000&$z? 0x8000000000000000&$z? 0 : 1: 2 : 0xF000000000000000&$z? 3: 4 : 0xFE00000000000000&$z? 0xFC00000000000000&$z? 5: 6 : 0xFF00000000000000&$z? 7: 8 : 0xFFF8000000000000&$z? 0xFFE0000000000000&$z? 0xFFC0000000000000&$z? 9: 10 : 0xFFF0000000000000&$z? 11: 12 : 0xFFFE000000000000&$z? 0xFFFC000000000000&$z? 13: 14 : 0xFFFF000000000000&$z? 15: 16 : 0xFFFFFF8000000000&$z? 0xFFFFF80000000000&$z? 0xFFFFE00000000000&$z? 0xFFFFC00000000000&$z? 17: 18 : 0xFFFFF00000000000&$z? 19: 20 : 0xFFFFFE0000000000&$z? 0xFFFFFC0000000000&$z? 21: 22 : 0xFFFFFF0000000000&$z? 23: 24 : 0xFFFFFFF800000000&$z? 0xFFFFFFE000000000&$z? 0xFFFFFFC000000000&$z? 25: 26 : 0xFFFFFFF000000000&$z? 27: 28 : 0xFFFFFFFE00000000&$z? 0xFFFFFFFC00000000&$z? 29: 30 : 0xFFFFFFFF00000000&$z? 31: 32 : 0xFFFFFFFFFFFF8000&$z? 0xFFFFFFFFFF800000&$z? 0xFFFFFFFFF8000000&$z? 0xFFFFFFFFE0000000&$z? 0xFFFFFFFFC0000000&$z? 33: 34 : 0xFFFFFFFFF0000000&$z? 35: 36 : 0xFFFFFFFFFE000000&$z? 0xFFFFFFFFFC000000&$z? 37: 38 : 0xFFFFFFFFFF000000&$z? 39: 40 : 0xFFFFFFFFFFF80000&$z? 0xFFFFFFFFFFE00000&$z? 0xFFFFFFFFFFC00000&$z? 41: 42 : 0xFFFFFFFFFFF00000&$z? 43: 44 : 0xFFFFFFFFFFFE0000&$z? 0xFFFFFFFFFFFC0000&$z? 45: 46 : 0xFFFFFFFFFFFF0000&$z? 47: 48 : 0xFFFFFFFFFFFFFF80&$z? 0xFFFFFFFFFFFFF800&$z? 0xFFFFFFFFFFFFE000&$z? 0xFFFFFFFFFFFFC000&$z? 49: 50 : 0xFFFFFFFFFFFFF000&$z? 51: 52 : 0xFFFFFFFFFFFFFE00&$z? 0xFFFFFFFFFFFFFC00&$z? 53: 54 : 0xFFFFFFFFFFFFFF00&$z? 55: 56 : 0xFFFFFFFFFFFFFFF8&$z? 0xFFFFFFFFFFFFFFE0&$z? 0xFFFFFFFFFFFFFFC0&$z? 57: 58 : 0xFFFFFFFFFFFFFFF0&$z? 59: 60 : 0xFFFFFFFFFFFFFFFE&$z? 0xFFFFFFFFFFFFFFFC&$z? 61: 62 : 0xFFFFFFFFFFFFFFFF&$z? 63: 64; }
my $m=0xFFFF8000&$z? 0xFF800000&$z? 0xF8000000&$z? 0xE0000000&$z? 0xC0000000&$z? 0x80000000&$z? 0 : 1: 2 : 0xF0000000&$z? 3: 4 : 0xFE000000&$z? 0xFC000000&$z? 5: 6 : 0xFF000000&$z? 7: 8 : 0xFFF80000&$z? 0xFFE00000&$z? 0xFFC00000&$z? 9: 10 : 0xFFF00000&$z? 11: 12 : 0xFFFE0000&$z? 0xFFFC0000&$z? 13: 14 : 0xFFFF0000&$z? 15: 16 : 0xFFFFFF80&$z? 0xFFFFF800&$z? 0xFFFFE000&$z? 0xFFFFC000&$z? 17: 18 : 0xFFFFF000&$z? 19: 20 : 0xFFFFFE00&$z? 0xFFFFFC00&$z? 21: 22 : 0xFFFFFF00&$z? 23: 24 : 0xFFFFFFF8&$z? 0xFFFFFFE0&$z? 0xFFFFFFC0&$z? 25: 26 : 0xFFFFFFF0&$z? 27: 28 : 0xFFFFFFFE&$z? 0xFFFFFFFC&$z? 29: 30 : 0xFFFFFFFF&$z? 31: 32;
In reply to Most Significant Set Bit by coldr3ality
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |