Nie wiem, co oznacza zapis W[i], czy jest to tablica, czy odwołanie od jakiejś funkcji ciężko stwierdzić, skoro nie napisałeś jaki to jest dział algorytmów (e.g. functions, procedures, arrays, macros, strings, ints; etc.). Najprawdopodobniej jest to (sądząc po nazwie) ..., czyli do zmiennej/funkcji W[i] trafia wartość ze zmiennej/stałej wart_max. Może to oznaczać też pozycję bitu zamieniając liczbę dziesiętną na jej binarny odpowiednik lub oznaczać to może ilość bitów. Można spekulować po tak zdawkowej ilości informacji na temat tego algorytmu jaką tu podałeś.
Załóżmy, że algorytm ten szuka i-tej pozycji bitu najbardziej wysuniętego w lewo licząc od prawej strony (The Most Significant Bit). Dla takich danych:
wart_max <-- 5
Będzie wyglądać to tak:
W[i] <-- wart_max
W[i] <-- 5
I teraz możliwe, iż W[i] to taka jakby funkcja, czy procedura, która szuka najbardziej znaczącego bitu. Dla tego przykładu byłby to bit numer dwa (2). Podsumowując W[i] osiągnęłaby maksymalną wartość 4 dla tego przykładu.
Sposób dochodzenia do problemu:
Weight: 8 4 2 1
dec |
3 |
2 |
1 |
0 |
|
|
|
|
|
5 |
0 |
1 |
0 |
1 |
|
i <-- 3 |
i <-- 2 |
i <-- 1 |
i <-- 0 |
W tabeli, liczby na samej górze obok tego dec to pozycje bitów, pierwszy bit ma number 0, drugi 1, trzeci 2, itd..
Najbardziej znaczący bit jest na pozycji drugiej (2), czyli bit ten "zapalony" jest dla cyfry 4 dziesiętnie.
Tak mniej więcej działa instrukcja Assembly 8086 o nazwie BSR - Bit Scan Reverse.