Tôi cần tìm thứ tự cao nhất 1 trong một số thời gian, số nguyên và quần short trong Java. Ví dụ, nếu tôi có một char trông giống như 00110101
, tôi cần một phương thức sẽ trả về 2 (chỉ số thứ tự cao nhất 1).Tìm thứ tự cao nhất 1 trong Java nguyên thủy
Bây giờ, tôi biết rằng bạn có thể làm điều này bằng cách sử dụng vòng lặp for như:
for(int i=0; i<8; i++)
if((x & 1<<i) != 0) return i;
return -1;
nhưng đây là cách chậm hơn so với những gì tôi muốn làm. Tôi biết các CPU hiện đại có hướng dẫn làm điều này trên chip, vì vậy tôi muốn biết làm thế nào tôi có thể thực hiện cuộc gọi đến đó thay vì có một vòng lặp rõ ràng.
CHỈNH SỬA: Điểm thưởng nếu bạn chỉ có thể trả về các chỉ mục của tất cả các số nguyên trong số nguyên thủy.
Cảm ơn.
Bạn có đang chạy trên một máy tính lớn không? – int3
Tôi đã được ấn tượng rằng Java xử lý endianess theo cách riêng của mình trong JVM, nhưng giả sử nó không, tôi sẽ sử dụng một C2D Intel, rất ít endian. – twolfe18
Chạy mã của bạn, tôi nhận được 0, không phải 2. – Buhb