Ich habe damit einen Int->Hex Umrechner hinbekommen, aber halt leider nicht ganz verstanden, warum er funktioniert. Hier der Code
function calcHex(iNbr) {
var hex = "0123456789ABCDEF";
var sRes = "";
while (iNbr != 0) {
sRes = hex.charAt(iNbr%16) + sRes;
iNbr = iNbr >> 4;
}
if (sRes=="") sRes="00";
return sRes;
}
erstmal warum jemand auf die Idee kommt statt zahl / 16 eine Bitoperation zu benutzen. Bitoperationen sind auf dem Computer die schnellsten Mathematischen Operationen die es gibt. Noch schneller als Additionen, im gegensatz dazu sind Fließkommazahlenberechnungen Saulangsam.
Was früher, als die Rechner noch im MHz Bereich rechneten, u.U. sehr wichtig war (gerade für Grafikberechungen). Deshalb wird sowas noch heute gern benutzt, du siehst der Mensch hat langjährige Programmiererfahrung.
Was passiert:
Du kennst binäre Zahlen, eine 25 z.b. ist:
0001 1010 wird diese um 1 Bit nach rechts verschoben dann:
0000 1100 und eine eins plumpst hinten raus, die Zahl ist jetzt -> 12
25 / 2 = 12 ( + 1)
das ganze nochmal um eins nach rechts:
0000 0110 eine null fällt weg -> 6
12 / 2 = 6 ( + 0)
Du hast also zweimal durch zwei geteilt, was das Gleiche wie eine Division durch vier ist:
25 / 4 = 6 ( + 1 entspricht binär: 0001 )
usw.
Struppi.