我需要在Java中查找一些longs、ints和shorts中的最高位1。例如,如果我有一个看起来像00110101
的char,我需要一个方法返回2(最高位1的索引)。
现在,我知道可以使用for循环来实现:
for(int i=0; i<8; i++)
if((x & 1<<i) != 0) return i;
return -1;
但这种方法比我想要的要慢得多。我知道现代CPU有内置指令可以执行此操作,因此我想知道如何调用它,而不是使用显式循环。
编辑:如果您只能返回原语中所有“1”的索引,则会获得额外的积分。
谢谢。