Ci sono molte domande su StackOverflow. Molto. Tuttavia non riesco a trovare una risposta che:Un modo rapido per trovare il bit più significativo e meno significativo in un numero intero a 64 bit
- Lavori in C#
- Opere per interi a 64 bit (in contrapposizione a 32-bit)
Più veloce di:
private static int Obvious(ulong v)
{
int r = 0;
while ((v >>= 1) != 0)
{
r++;
}
return r;
}
O anche
int r = (int)(Math.Log(v,2));
Sono assu qui una CPU Intel a 64 bit.
Un riferimento utile è il Bit Hacks page e un altro è fxtbook.pdf Tuttavia, mentre questi forniscono indicazioni utili per affrontare il problema, non forniscono una risposta pronta.
Sono dopo una funzione riutilizzabile che può fare qualcosa di simile a _BitScanForward64 e _BitScanReverse64 solo per C#.
Non è essenzialmente lo stesso di http://stackoverflow.com/questions/10439242/count-leading-zeroes-in-an-int32? Ovviamente, dovresti regolarlo per 64 bit, e ti dà l'opposto del numero che stai cercando, ma trasmette le stesse informazioni. – Taekahn
@Taekahn la regolazione a 64 bit non è affatto banale. Provalo. Come ho riconosciuto nella domanda, la risposta a 32 bit esiste su SO. –