# Lukujärjestelmämuunnin

> BIN/HEX/DEC/OCT-lukujärjestelmämuunnin ohjelmoijille ja muille. Tukee kaksikomplementtia, 8-64 bitin leveyttä ja suuria lukuja. Kaikki verkossa ja ilmaiseksi.

URL: https://acrafto.com/fi/lukujarjestelma-muunnin/

Tools are interactive browser apps; there is no public API, no endpoints to call and no server-side processing. To use a tool, open its HTML page in a browser.

Tietokoneiden maailma pyörii nollien ja ykkösten ympärillä, mutta ihmiset ajattelevat kymmenjärjestelmässä. Entä ohjelmoijat? Heidän on ymmärrettävä kaikki siltä väliltä. Olipa kyseessä matalan tason koodin debuggaaminen, värien asettaminen CSS:ssä, IP-maskien laskeminen tai tietojenkäsittelytehtävien ratkaiseminen, kohtaat tarpeen muuntaa lukuja eri järjestelmien välillä.

Tavalliset laskimet Windowsissa tai mobiililaitteissa ovat usein hitaita ja kömpelöitä. Meidän **älykäs lukujärjestelmämuuntimemme** on kehitetty ohjelmoijilta ohjelmoijille. Se tarjoaa välittömän reaaliaikaisen muunnoksen, tuen erittäin suurille luvuille ja yhtenä harvoista verkkotyökaluista **käsittelee negatiiviset luvut binäärimuodossa oikein**.

## Mitä tämä lukujärjestelmämuunnin osaa?

Tämän widgetin kehityksessä keskityimme ratkaisemaan ohjelmoijien yleisimpiä ongelmia:

1. **Reaaliaikainen reagointikyky:** Ei “Laske”-painiketta. Aloita kirjoittaminen HEX-kenttään, ja näet välittömästi, kuinka BIN ja DEC muuttuvat.
2. **Negatiivisten lukujen tuki (Signed Integers):** Useimmat online-muuntimet epäonnistuvat, kun kirjoitat `-5`. Meidän ei. **Bittisyvyyden** (8, 16, 32, 64 bittiä) valinnalla simuloimme prosessorin tarkkaa käyttäytymistä ns. kaksikomplementin avulla.
3. **Binäärikoodin luettavuus:** `1110101011011110`\-merkkijonon tuijottaminen rasittaa silmiä. Työkalumme voi automaattisesti muotoilla ulostulon 4 bitin (nibble) välein muotoon `1110 1010 1101 1110`, mikä vähentää merkittävästi virheitä kopioitaessa.
4. **BigInt-tuki:** Tarvitsetko muuntaa 64-bittisen luvun tai hashin? Standardi JavaScript päättyy lukuun $2^{53}$. Moottorimme käsittelee minkä tahansa pituisia lukuja “Etumerkitön” (Unsigned) -tilassa.

---

## Opas lukujärjestelmiin: Milloin mitäkin käyttää?

### 1\. Desimaalijärjestelmä (DEC - Decimal)

- **Perusta:** 10 (numerot 0-9)
- **Käyttö:** Arkielämä, talous, silmukoiden laskeminen koodissa.
- **Mielenkiintoista:** Tietokoneet eivät ymmärrä sitä, vaan niiden on muunnettava se binäärimuotoon.

### 2\. Binäärijärjestelmä (BIN - Binary)

- **Perusta:** 2 (numerot 0, 1)
- **Käyttö:** Koneisto, logiikkaportit, IP-osoitteiden maskaaminen.
- **Vinkki:** Jokainen numero edustaa yhtä bittiä. 8 bittiä muodostaa 1 tavun (Byte).

### 3\. Heksadesimaalijärjestelmä (HEX - Hexadecimal)

- **Perusta:** 16 (numerot 0-9, kirjaimet A-F)
- **Käyttö:** Binäärikoodin kompakti esitys. Yksi HEX-merkki edustaa tarkalleen 4 bittiä (nibble). Kaksi merkkiä (esim. `FF`) edustaa koko tavua.
- **Esimerkkejä:**
  - Verkkosivujen värit: `#FF5733` (Punainen, Vihreä, Sininen).
  - MAC-osoitteet: `00:1A:2B:3C:4D:5E`.
  - Muistivedokset (Memory dumps).

### 4\. Oktaalijärjestelmä (OCT - Octal)

- **Perusta:** 8 (numerot 0-7)
- **Käyttö:** Historiallisesti vanhemmat tietokoneet, nykyään erityisesti **Linuxin oikeudet** (chmod).
- **Esimerkki:** Komento `chmod 755` asettaa oikeudet rwx-rx-rx (luku, kirjoitus, suoritus).

---

## Kuinka käsitellä negatiivisia lukuja oikein?

Tämä on muuntimemme edistyksellisin ominaisuus. Tietokoneen muistissa ei ole “miinus”-merkkiä. Jotta tietokone tallentaisi negatiivisen luvun, se käyttää useimmiten **kaksikomplementtimenetelmää (Two’s Complement)**.

Negatiivisen luvun muuntotulos riippuu siitä, kuinka monta bittiä muuttujalle on varattu. Siksi yläpalkissa on valitsin **Bittisyvyys**.

### Esimerkki: Miltä luku -5 näyttää?

Kokeile itse muuntimessamme:

1. Aseta syvyydeksi **8 bittiä**.
   - Syötä DEC:iin: `-5`.
   - Tulos HEX: `FB`.
   - Tulos BIN: `1111 1011`.
   - *Selitys:* $256 - 5 = 251$ (mikä on FB).
2. Aseta syvyydeksi **16 bittiä**.
   - Syötä DEC:iin: `-5`.
   - Tulos HEX: `FFFB`.
   - *Selitys:* Koska meillä on enemmän tilaa, “ykköset” täyttävät jäljellä olevan tilan vasemmalla.
3. Aseta syvyydeksi **Vain positiiviset (Unsigned)**.
   - Jos syötät `-5`, kenttä muuttuu punaiseksi. Tämä tila ei tue negatiivisia lukuja, koska se vaatisi äärettömän monta ykköstä.

> **Pro-vinkki:** Jos käsittelet värejä tai IP-osoitteita, käytä aina tilaa **“Vain positiiviset”**. Jos teet C/C++- tai assembly-tehtäviä, vaihda **32-bittiseen** tai **64-bittiseen**.

---

## Nopeiden muunnosten taulukko (Cheat Sheet)

Nopeaa orientoitumista varten tässä on perustietoja, jotka jokaisen “IT-nörtin” tulisi muistaa ulkoa.

| Desimaali (DEC) | Heksadesimaali (HEX) | Binääri (BIN) | Huomautus |
| :--- | :--- | :--- | :--- |
| **0** | 00 | 0000 | Nolla |
| **1** | 01 | 0001 |  |
| **10** | 0A | 1010 |  |
| **15** | 0F | 1111 | Maksimiarvo 4 bitille (Nibble) |
| **16** | 10 | 0001 0000 |  |
| **127** | 7F | 0111 1111 | Maksimiarvo etumerkilliselle 8-bitille (char) |
| **255** | FF | 1111 1111 | Maksimiarvo etumerkittömälle 8-bitille (tavu) |
| **65 535** | FFFF | … | Maksimiarvo 16-bitille |

---

## Usein kysytyt kysymykset (FAQ)

### Mitä "Bittisyvyys" tarkoittaa?

Määrittää, kuinka paljon muistia luvulle on varattu.

- **8 bittiä:** Arvot 0-255 (tai -128-127). Vastaa tyyppiä `char` tai `byte`.
- **16 bittiä:** Arvot 65 535 asti. Vastaa tyyppiä `short`.
- **32 bittiä:** Standardi `int` moderneissa kielissä.
- **64 bittiä:** Erittäin suurille luvuille (`long long`, `BigInt`).

### Miksi luku 255 kirjoitetaan HEX-muodossa FF?

Heksadesimaalijärjestelmässä on 16 numeroa (0-9 ja A-F), missä F:n arvo on 15. Luku `FF` lasketaan näin: $(15 \\times 16^1) + (15 \\times 16^0) = 240 + 15 = 255$.

### Kuinka muunnan HEX-värin RGB:ksi?

Verkkosivun väri, esim. `#E05412`, koostuu kolmesta tavusta: Punainen (E0), Vihreä (54), Sininen (12). Syötä muuntimeemme "E0" HEX-kenttään -> saat 224. Syötä "54" -> saat 84. Syötä "12" -> saat 18. Tulos on `rgb(224, 84, 18)`.

### Mitä etuliitteet 0x, 0b tai 0o tarkoittavat?

Jotta ohjelmoijat voivat erottaa järjestelmät, käytetään etuliitteitä:

- `0x` = Heksadesimaali (esim. 0xFF)
- `0b` = Binääri (esim. 0b101)
- `0o` = Oktaali (esim. 0o755)

Muuntimemme tunnistaa nämä merkinnät, mutta niitä ei ole pakko kirjoittaa.

### Miksi kenttä muuttui punaiseksi?

Se on syötteen validoinnin toiminto. Se tarkoittaa, että olet syöttänyt merkin, joka ei kuulu kyseiseen järjestelmään. Esimerkiksi:

- Kirjain "G" HEX-muotoon (vain A-F on sallittu).
- Numero "2" BIN-muotoon (vain 0 ja 1 on sallittu).
- Numero "8" OCT-muotoon (vain 0-7 on sallittu).

Korjaa kirjoitusvirhe, niin laskenta jatkuu.

## Other languages

- Čeština (cs): [Převodník číselných soustav](https://acrafto.com/cs/prevody-ciselnych-soustav/) ([Markdown](https://acrafto.com/cs/prevody-ciselnych-soustav/index.md))
- Slovenčina (sk): [Prevodník číselných sústav](https://acrafto.com/sk/prevodnik-ciselnych-sustav/) ([Markdown](https://acrafto.com/sk/prevodnik-ciselnych-sustav/index.md))
- English (en): [Number System Converter](https://acrafto.com/en/number-system-converter-negative-numbers/) ([Markdown](https://acrafto.com/en/number-system-converter-negative-numbers/index.md))
- Deutsch (de): [Zahlensystem-Konverter](https://acrafto.com/de/zahlensystem-konverter-negative-zahlen/) ([Markdown](https://acrafto.com/de/zahlensystem-konverter-negative-zahlen/index.md))
- Français (fr): [Convertisseur de bases numériques](https://acrafto.com/fr/convertisseur-bases-numeriques/) ([Markdown](https://acrafto.com/fr/convertisseur-bases-numeriques/index.md))
- Español (es): [Conversor de bases numéricas](https://acrafto.com/es/convertidor-sistemas-numericos-numeros-negativos/) ([Markdown](https://acrafto.com/es/convertidor-sistemas-numericos-numeros-negativos/index.md))
- Italiano (it): [Convertitore di basi numeriche](https://acrafto.com/it/convertitore-basi-numeriche/) ([Markdown](https://acrafto.com/it/convertitore-basi-numeriche/index.md))
- Português (pt): [Conversor de bases numéricas](https://acrafto.com/pt/conversor-sistemas-numericos-negativos/) ([Markdown](https://acrafto.com/pt/conversor-sistemas-numericos-negativos/index.md))
- Nederlands (nl): [Getallenstelsels omrekenen](https://acrafto.com/nl/getallenstelsel-converter/) ([Markdown](https://acrafto.com/nl/getallenstelsel-converter/index.md))
- Polski (pl): [Konwerter systemów liczbowych](https://acrafto.com/pl/konwerter-systemow-liczbowych-z-liczbami-ujemnymi/) ([Markdown](https://acrafto.com/pl/konwerter-systemow-liczbowych-z-liczbami-ujemnymi/index.md))
- Română (ro): [Convertor sisteme de numerație](https://acrafto.com/ro/convertor-sisteme-numerice-numere-negative/) ([Markdown](https://acrafto.com/ro/convertor-sisteme-numerice-numere-negative/index.md))
- Magyar (hu): [Számrendszer átváltó](https://acrafto.com/hu/szamrendszer-atalakito-negativ-szamokkal/) ([Markdown](https://acrafto.com/hu/szamrendszer-atalakito-negativ-szamokkal/index.md))
- Ελληνικά (el): [Μετατροπέας αριθμητικών συστημάτων](https://acrafto.com/el/number-system-converter-negative-numbers/) ([Markdown](https://acrafto.com/el/number-system-converter-negative-numbers/index.md))
- Български (bg): [Конвертор на бройни системи](https://acrafto.com/bg/konvertor-chislovi-sistemi/) ([Markdown](https://acrafto.com/bg/konvertor-chislovi-sistemi/index.md))
- Hrvatski (hr): [Pretvarač brojevnih sustava](https://acrafto.com/hr/konverter-brojevnih-sustava-s-negativnim-brojevima/) ([Markdown](https://acrafto.com/hr/konverter-brojevnih-sustava-s-negativnim-brojevima/index.md))
- Slovenščina (sl): [Pretvorba številskih sistemov](https://acrafto.com/sl/pretvarjalnik-stevilskih-sistemov/) ([Markdown](https://acrafto.com/sl/pretvarjalnik-stevilskih-sistemov/index.md))
- Eesti (et): [Arvusüsteemide teisendaja](https://acrafto.com/et/arvususteemide-muundur/) ([Markdown](https://acrafto.com/et/arvususteemide-muundur/index.md))
- Latviešu (lv): [Skaitļu sistēmu konvertors](https://acrafto.com/lv/skaitlu-sistemu-konvertors/) ([Markdown](https://acrafto.com/lv/skaitlu-sistemu-konvertors/index.md))
- Lietuvių (lt): [Skaičių sistemų keitiklis](https://acrafto.com/lt/skaiciu-sistemu-keitiklis/) ([Markdown](https://acrafto.com/lt/skaiciu-sistemu-keitiklis/index.md))
- Svenska (sv): [Talsystemsomvandlare](https://acrafto.com/sv/talsystem-konverterare-negativa-tal/) ([Markdown](https://acrafto.com/sv/talsystem-konverterare-negativa-tal/index.md))
- Dansk (da): [Talsystem omregner](https://acrafto.com/da/talsystem-omregner/) ([Markdown](https://acrafto.com/da/talsystem-omregner/index.md))
- Norsk (no): [Tallsystemkonverterer](https://acrafto.com/no/tallsystemkonverterer-negative-tall/) ([Markdown](https://acrafto.com/no/tallsystemkonverterer-negative-tall/index.md))
- Українська (uk): [Конвертер систем числення](https://acrafto.com/uk/konverter-chyselnykh-system/) ([Markdown](https://acrafto.com/uk/konverter-chyselnykh-system/index.md))
- Русский (ru): [Конвертер систем счисления](https://acrafto.com/ru/konverter-sistem-schisleniya/) ([Markdown](https://acrafto.com/ru/konverter-sistem-schisleniya/index.md))
- Српски (sr): [Konverter brojevnih sistema](https://acrafto.com/sr/konverter-brojevnih-sistema/) ([Markdown](https://acrafto.com/sr/konverter-brojevnih-sistema/index.md))
- Македонски (mk): [Претворач на бројни системи](https://acrafto.com/mk/pretvornik-brojni-sistemi/) ([Markdown](https://acrafto.com/mk/pretvornik-brojni-sistemi/index.md))
- Bosanski (bs): [Konverter brojevnih sistema](https://acrafto.com/bs/konverter-brojevnih-sistema/) ([Markdown](https://acrafto.com/bs/konverter-brojevnih-sistema/index.md))
- Shqip (sq): [Konvertues sistemesh numerike](https://acrafto.com/sq/konvertues-sistemesh-numerike/) ([Markdown](https://acrafto.com/sq/konvertues-sistemesh-numerike/index.md))
- Türkçe (tr): [Sayı sistemleri dönüştürücü](https://acrafto.com/tr/sayi-sistemleri-donusturucu/) ([Markdown](https://acrafto.com/tr/sayi-sistemleri-donusturucu/index.md))
- 日本語 (ja): [進数変換](https://acrafto.com/ja/number-system-converter/) ([Markdown](https://acrafto.com/ja/number-system-converter/index.md))
- 한국어 (ko): [진법 변환기](https://acrafto.com/ko/number-system-converter/) ([Markdown](https://acrafto.com/ko/number-system-converter/index.md))
- العربية (ar): [تحويل الأنظمة العددية](https://acrafto.com/ar/number-system-converter/) ([Markdown](https://acrafto.com/ar/number-system-converter/index.md))
- हिन्दी (hi): [संख्या प्रणाली कनवर्टर](https://acrafto.com/hi/number-system-converter/) ([Markdown](https://acrafto.com/hi/number-system-converter/index.md))
- Bahasa Indonesia (id): [Konverter sistem bilangan](https://acrafto.com/id/konverter-sistem-bilangan/) ([Markdown](https://acrafto.com/id/konverter-sistem-bilangan/index.md))
- Tiếng Việt (vi): [Chuyển đổi hệ cơ số](https://acrafto.com/vi/chuyen-doi-he-co-so-so-voi-so-am/) ([Markdown](https://acrafto.com/vi/chuyen-doi-he-co-so-so-voi-so-am/index.md))
- ไทย (th): [แปลงเลขฐาน](https://acrafto.com/th/tua-plaeng-rabop-tua-lek/) ([Markdown](https://acrafto.com/th/tua-plaeng-rabop-tua-lek/index.md))
- עברית (he): [המרת בסיסים](https://acrafto.com/he/number-base-converter/) ([Markdown](https://acrafto.com/he/number-base-converter/index.md))
