W dzisiejszej lekcji poznamy jak ważyć liczby w pozycyjnych systemach liczbowych. Brzmi groźnie, ale to bardzo proste.
Od razu mówię, nie jestem matematykiem. Ale systemy liczbowe są albo pozycyjne albo addytywne. Oto addytywny system liczbowy:
1 = |
||| = 1 + 1 + 1 (3)
Ok, a to pozycyjny system liczbowy o bazie 10:
1 = 1
111 = 100 + 10 + 1
Teraz jak to wszystko działa:
- Pozycję wyznaczamy od prawej do lewej
- Pozycję liczymy od zera
- Waga to baza do potęgi pozycja
- Wartość to wartość cyfry razy waga
- Końcowa wartość to dodane do siebie wartości
Łatwiej to na przykładach zrozumieć:
Baza = 10 (dziesiętny)
Liczba = 1
Pozycja = 0
Wartość = 1 * 10^0, czyli 1
Okej, teraz trudniejszy przykład
Liczba - 137
Baza - 10
Cyfry - 1 3 7
Pozycje - 2 1 0
Wartości - 1 * 10^2 + 3 *10^1 + 7 * 10^0
Ok, jak w JS możemy „zabrać” ostatnią cyfrę?
console.log(137 % 10)
//7
A jak „urwać” ostatnią cyfrę?
let number = 123;
let number2 = Math.floor(number / 10);
console.log(number2);
//12
A jak coś do potęgi podnosimy?
let number = 123;
let lastDigit = 123 % 10; //3
let pos = 0;
let base = 10;
let val = lastDigit * Math.pow(base, pos); //3 * 10^0
console.log(val);
//3 * 10^0 -> 3 * 1 -> 3
Możemy teraz napisać taką śmieszną funkcję, która nam zamienia liczbę dziesiętną na zważone wartości:
function weightsOfDecimalNumber(num){
let weights = [];
let i = 0;
while(num !== 0){
let lastDigit = num % 10;
weights.push(lastDigit * Math.pow(10, i));
i++;
num = Math.floor(num / 10);
}
return weights;
}
console.log(weightsOfDecimalNumber(137));
//[ 7, 30, 100 ]
To tylko taki trening przed prawdziwą zabawą, upewniam się, że „jesteśmy na tej samej stronie”. Więcej w następnych lekcjach.