Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit

Dvojková soustava má 2 znaky (0, 1), desítková 10 znaků.
Šestnáctková soustava má 16 znaků, 0-9, a místo znaků
10, 11, 12, 13, 14, 15 používá písmena po řadě
A, B, C, D, E , F
např. po FF je 100, což je v desítkové soustavě 255, 256
Offline
po FF je 100, což je v desítkové soustavě 255, 256
Proč přesně tomu tak je? Mám do školy vypracovat kód na převod mezi číselnými soustavami, to sem udělal, ale nechápu, jak to funguje.
using System;
using System.Text;
using Knihovna;
namespace konverze
{
public class Konvertor
{
private const string ČÍSLICE = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private int základ;
public Konvertor(int _základ)
{
if (_základ < 2) throw new Exception("Základ menší než 2");
if (_základ > 36) throw new Exception("Základ větší než 36");
základ = _základ;
}
public string Konvertuj(int n)
{
if (n == 0)
{
return "0";
}
StringBuilder číslo = new StringBuilder("");
bool záporné = n < 0;
if (záporné)
{
n = Math.Abs(n);
}
while (n != 0)
{
číslo.Append(ČÍSLICE[n % základ]);
n /= základ;
}
if (záporné)
{
číslo.Append("-");
}
int i = 0, j = číslo.Length - 1;
while (i < j)
{
char pom = číslo[i];
číslo[i++] = číslo[j];
číslo[j--] = pom;
}
return číslo.ToString();
//char[] znaky = číslo.ToString().ToCharArray();
//Array.Reverse(znaky);
//return new string(znaky);
}
}
class Test
{
static void Main()
{
Console.Write("Zadejte základ cílové soustavy (2 - 36): ");
int základ = Vstup.ČtiInt();
Konvertor konvertor = new Konvertor(základ);
Console.Write("Zadejte číslo, které do ní chcete převést: ");
int co = Vstup.ČtiInt();
Console.WriteLine(konvertor.Konvertuj(co));
//Console.Read();
}
}
}Offline
↑ idkfa2017:
Podívej se třeba na trojkovou soustavu. Ta se skládá jen ze tří znaků (0, 1, 2) a jakmile všechny znaky dojdou, přidá se na začátek čísla nová cifra. Přirozená čísla zapsaná v trojkové soustavě by tedy byla:
1 = 1
2 = 2
3 = 10
4 = 11
5 = 12
6 = 20
7 = 21
8 = 22
9 = 100
10 = 101
11 = 102
12 = 110
...
Jednotlivé číslice (od konce) čísla zapsaného v trojkové soustavě představují mocniny trojky. Například číslo 20121 v trojkové soustavě obsahuje:
- jednou jedničku (3⁰),
- dvakrát trojku (3¹),
- jednou devítku (3²),
- nulakrát dvacet sedmičku (3³),
- dvakrát osmdesát jedničku (3⁴).
Tedy v desítkové soustavě máme 1 + 6 + 9 + 0 + 162 = 178.
Podobně třeba 1120₃ = 0 · 1 + 2 · 3 + 1 · 9 + 1 · 27 = 6 + 9 + 27 = 42₁₀.
Při převodu z trojkové do desítkové soustavy můžeme postupovat obdobně:
42₁₀ = 0 · 1 + 2 · 3 + 1 · 9 + 1 · 27 = 1120₃
Šestnáctková soustava funguje stejně, jen je v ní znaků 16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). Přirozená čísla by zkráceně vypadala takto:
1 = 1
2 = 2
...
8 = 8
9 = 9
10 = A
11 = B
...
15 = F
16 = 10
17 = 11
18 = 12
...
Číslice reprezentují mocniny 16:
35F1₁₆ = 1 · 16⁰ + F · 16¹ + 5 · 16² + 3 · 16³ = 1 · 1 + 15 · 16 + 5 · 256 + 3 · 4 096 = 1 + 240 + 1 280 + 12 288 = 13 809₁₀
AB₁₆ = B · 16⁰ + A · 16¹ = 11 · 1 + 10 · 16 = 11 + 160 = 171₁₀
73₁₀ = 4 · 16¹ + 9 · 16⁰ = 49₁₆
Offline

Je to naprosto jasné, např. dvojková soustava vypadá takto
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
atd.
Myslím, že Vám to kolega vysvětlil.
Ještě něco:
16 je mocnina čísla 2
např.: 50=(110010) ve dvojkové
50=(0011 0010)=(32) v šestnáctkové
Offline
↑ idkfa2017:
Jelikož čísel je nekonečně mnoho, nemůžeš mít pro každé vlastní značku. Tento problém lze vyřešit použitím číselných soustav, např. nepoziční soustava římských čísel nebo poziční soustava arabských čísel. Můžeš si vybrat libovolný počet znaků a vymyslet systém, jak je kombinovat k získání libovolného čísla.
Běžně používáme znaků deset (0, 1, ..., 9). Každý znak v tomto pořadí reprezentuje číslo od 0 do 9, ale pro vyšší čísla je třeba tyto znaky kombinovat. Jakmile překročíš 9, přidáš před číslo další číslici a celý cyklus můžeš opakovat.
Desítkovou soustavu používáme z historických důvodů. V některých situacích je ale výhodnější přejít do soustavy jiné. Například počítače pracují ve dvojkové soustavě, protože je pro ně jednodušší pracovat jen se dvěma číslicemi (1 nebo 0 - proud prochází nebo neprochází). Naopak vyššího počtu znaků se využívá v situacích, kdy je třeba zkráceně zapsat větší čísla. Třeba při zápisu barvy v rgb modelu se často používá šestnáctková soustava, protože umožňuje napsat tři čísla 0 až 255 (0 - FF) pomocí šesti znaků.
Možná bude lepší, když vedle sebe uvidíš přirozená čísla s nulou v různých soustavách s nulami doplněnými na začátky těchto čísel, které se běžně vynechávají:
Desítková Dvojková Trojková Šestková Šestnáctková
000000 000000 000000 000000 000000
000001 000001 000001 000001 000001
000002 000010 000002 000002 000002
000003 000011 000010 000003 000003
000004 000100 000011 000004 000004
000005 000101 000012 000005 000005
000006 000110 000100 000010 000006
000007 000111 000101 000011 000007
...
Offline
idkfa2017 napsal(a):
Mě to celý nedává smysl, je v tom bordel a přijde mi to značně nepraktický.
Nejdřív zkus vymyslet, co ti přijde tak speciálního a praktického zrovna na desítkové soustavě.
Šestnáctková se používá zejména proto, že se dá jednoduše převádět na dvojkovou (bez nějakého složitého počítání), a dvojková proto, že v ní počítají počítače. Jiné soustavy se nepoužívají...aspoň né běžně...
Samozřejmě, že 16-ková soustava potřebuje 16 symbolů, a my jich máme jen 10, proto se zbytek doplňuje písmeny A-F.
Offline
Pozdravujem ↑ MichalAld:,
Toto https://fr.wikiversity.org/wiki/Code_de … nt_de_base sa oplati precitat .
Maly slovnik postaci.
Offline