Permalänk

Ettor och nollor

Jag hoppas det är rätt forums del annars får någon moderator flytta tråden.

Jag måtte få hjälp med att förstå hur man räknar:

Hexadecimal -> decimal
Decimal -> hexadecimal
Hexadecimal -> binär

Hexadecimal till decimal

Tex. 3FC

Som blir: 3 15 12 men ska man då plussa ihop dom så att det blir 30 ?

Decimal till hexadecimal

Tex. 105

Som blir: A5 ?

Hexadecimal till binär

Tex A31

Som blir: 101000110001 ?

Visa signatur

Intel i5 @ 2,66Ghz | Noctua NH-D14 | 4gb corsair 1600mhz | Asus P7P55D-E PRO | Antec p182 | Corsair 550w |Asus 6950 2gb upplåsta shaders, ASUS 5770 V2|Samsung SpinPoint F3 1 TB |Benq BL2400PT | LG 42PQ6500 | Steelseries Siberia v1 |Asus Xonar DX |Creative EP-630 | AKG K601 | Dynavoice F-6 EX 5.0 |Canton Reference 9.2 DC | Atacama Nexus 6| Onkyo 607

Permalänk
Medlem
Skrivet av jooelhoglund:

Jag hoppas det är rätt forums del annars får någon moderator flytta tråden.

Jag måtte få hjälp med att förstå hur man räknar:

Hexadecimal -> decimal
Decimal -> hexadecimal
Hexadecimal -> binär

Hexadecimal till decimal

Tex. 3FC

Som blir: 3 15 12 men ska man då plussa ihop dom så att det blir 30 ?

Decimal till hexadecimal

Tex. 105

Som blir: A5 ?

Hexadecimal till binär

Tex A31

Som blir: 101000110001 ?

för hex till decimal måste du först köra hex till binär och sen binär till decimal och tvärt om om du ska ha decimal till hex, om jag inte minns fel

Permalänk
Medlem

och ditt exempel på hex -> binär är helt rätt

Permalänk
Skrivet av mushto:

för hex till decimal måste du först köra hex till binär och sen binär till decimal och tvärt om om du ska ha decimal till hex, om jag inte minns fel

Då blir det såhär:

Hexa: 3FC

Binär: 0011 1111 1100

Som blir: 3 15 12, det blir ju samma svar :s ?

Decimal till hexadecimal

Decimal: 105

Binär: 1010 0101

Som blir: A5

Du måste nog förklara bättre för jag e ganska så vilse

Visa signatur

Intel i5 @ 2,66Ghz | Noctua NH-D14 | 4gb corsair 1600mhz | Asus P7P55D-E PRO | Antec p182 | Corsair 550w |Asus 6950 2gb upplåsta shaders, ASUS 5770 V2|Samsung SpinPoint F3 1 TB |Benq BL2400PT | LG 42PQ6500 | Steelseries Siberia v1 |Asus Xonar DX |Creative EP-630 | AKG K601 | Dynavoice F-6 EX 5.0 |Canton Reference 9.2 DC | Atacama Nexus 6| Onkyo 607

Permalänk
Medlem

Det här är en övning i att räkna i andra baser än 10. Du är är så van att räkna med basen 10 att du inte ens tänker på det, men låt mig ge ett exempel hur du automatiskt gör. Talet 1020 skrivs i basen 10 som:

1*10^3 + 0*10^2 + 2*10^1 + 0*10^0 = 1000 + 0 + 20 + 0 = 1020.

När du räknar i basen 16 (HEX) gör du precis likadant. Ta t.ex. talet 3FC som du hade (här används bokstäverna A=10, B=11, C=12, D=13, E=14, F=15)

3*16^2 + 15*16^1 + 12*16^0 = 768 + 240 + 12 = 1020

Sen hade du ett exempel på slutet också där du räknar i basen 2 (binärt). Talet är 101000110001

1*2^11 + 0*2^10 + 1*2^9 + 0*2^8 + 0*2^7 + 0*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 2048 + 0 + 512 + 0 + 0 + 0 + 0 + 32 + 16 + 0 + 0 + 0 + 1 = 2609

Du skulle kunna ha talsystem på vilken bas som helst, och för att gå till decimal bas så gör du analogt med exemplen ovan. Du hade ett antal andra frågor, men jag lämnar det till nån annan hungrig sweclocker eller så tar jag det i morgon

Visa signatur

Louqe Ghost S1 MK3 | Asus ROG Strix B660-I Gaming WiFi | Intel Core i7 12700K | nVidia RTX 2070 Super FE | Corsair 64GB (2x32GB) DDR5 5600MHz CL40 Vengeance | Samsung 980 PRO M.2 NVMe SSD 2TB | Corsair SF750 750W 80+ Platinum | Noctua NH-L12 Ghost S1 edition | Kablar från pslate customs | 2 stk Dell Ultrasharp 3014 | Logitech MX Keys | Logitech MX Anywhere

Permalänk
Medlem

När man räknar decimalt så står varje siffra för en tio-potens, t.ex. 345 = 3*10^2 + 4*10^1 + 5*10^0 = 3*100 + 4*10 + 5*1. I de hexadecimala och binära talsystemen så använder man istället 16 respektive 2 som bas.

3FC hexadecimalt blir därför 3*16^2 + 15*16^1 + 12*16^0 = 3*256 + 15*16 + 12*1 = 1020. 105 decimalt till hexadecimalt är lite knepigare. Man får börja med att leta reda på den 16-potens som är större än 105, i detta fall 16^2 = 256, och sedan dela 105 med potensen under, dvs. 16^1 = 16. 105 / 16 blir 6 rest 9. Det blir alltså 105 = 6*16^1 + 9*16^0, dvs. 69 och inte A5. Binärt fungerar på precis samma sätt fast med basen 2 istället för 16.

Hexadecimalt -> binärt och tvärtom är väldigt enkelt att konvertera, eftersom fyra binära siffror motsvarar en hexadecimal siffra. A31 hexadecimalt blir alltså 1010 0011 0001 precis som du säger, och att konvertera åt andra hållet är bara att göra tvärtom.

Läs mer på t.ex. Wikipedia.

Permalänk

Jag tycker att det är lättast att alltid gå genom binär om man ska omvandla från decimal till hexa.
Om man däremot ska från hexa till decimal är det ganska enkelt att göra direkt.
typ hexa 4D blir --> 01001101 ---> 77.

Visa signatur

Veritas Vos Liberabit o Despectivus Dei

Permalänk

5AD

010110101101

5*16^2 + 10*16^1 + 13*16^0 = 1280 + 160 + 13 = 1453

Så blir det ?

Skrivet av perost:

105 decimalt till hexadecimalt är lite knepigare. Man får börja med att leta reda på den 16-potens som är större än 105, i detta fall 16^2 = 256, och sedan dela 105 med potensen under, dvs. 16^1 = 16. 105 / 16 blir 6 rest 9. Det blir alltså 105 = 6*16^1 + 9*16^0, dvs. 69 och inte A5. Binärt fungerar på precis samma sätt fast med basen 2 istället för 16.

Den här delen förstod jag inte, någon som kan förklara lite lättare om det går ?

Tack för alla svar

Visa signatur

Intel i5 @ 2,66Ghz | Noctua NH-D14 | 4gb corsair 1600mhz | Asus P7P55D-E PRO | Antec p182 | Corsair 550w |Asus 6950 2gb upplåsta shaders, ASUS 5770 V2|Samsung SpinPoint F3 1 TB |Benq BL2400PT | LG 42PQ6500 | Steelseries Siberia v1 |Asus Xonar DX |Creative EP-630 | AKG K601 | Dynavoice F-6 EX 5.0 |Canton Reference 9.2 DC | Atacama Nexus 6| Onkyo 607

Permalänk
Hedersmedlem

Hex har ju basen 16 så dela decimaltalet med 16. 105/16 = 6,5625. 6*16 = 96. 105 - 96 = 9. och det blir då 69 i Hex. Resten tala om att man har ett ett tal mellan 1-15 (1-F) längst till höger. hade divisionen gått jämt ut vore talet 0. t ex decimaltalet 240. 240/16 =15. 15 = F och ingen rest = 0 och det blir då Hex F0.

Om man tar ett större tal t ex 2000 gör man likadant 2000/16 = 125. Ingen rest talar om att talet längst till höger = 0. Då 125 är större än 15 måste talet divideras med 16 igen. 125/16 = 7,8125. Nu när talet är mindre än 15 behöver man inte dela med 16 längre utan nu tar man heltalet och gör om till Hex och gör sedan om resten till Hex. 7*16 =112. 125 - 112 = 13 =D. Det blir i Hex 7D0.

När man skall gör om Hex till decimal så skall man mycket riktigt addera men man skall utgå från basenn 16. Värdet för F =15 och värdet för FF =255. F+1 = 10 (Dec 16). FF+1 =100 (Dec 256). 3FC bilr då (256*3) + (16*15) + (1*12) = 1020. Rent matematisk skriver man (16^2 * 3) + (16^1 * 15) + (16^0 *12) = (256*3) + (16*15) + (1*12) =1020.

Lek med den här omvandlaren så blir det lättare.
HEXADECIMAL to BINARY conversion, HEX to Decimal converter, Hexdecimal convertor

Det är lite knöligt när man blandar in decimalsystemet då det är baserat på basen 10 och det går inte lätt in i det Hexamal eller binär systemet. Däremot är det binära systemet en mindre del i det hexamala systemet och gör att det lätt går att omvandla mellan de två.

Man kan alltså inte göra omvandlingen och få rätt binärt värde på.

Decimal: 105

Binär: 1010 0101

På en digital klockradion kan man dock använda den här tekniken som kalls BCD (binary coded decimal) för att snabbt och enkelt visa vad klockan är med fyra 4-bitars omvandlare.

Binär: 0010 0001 0101 0111

Decimal: 2 1 5 7

Som då blir klockslaget 21:57

Visa signatur

Rocking hard !!!

Kontakt: malo@sweclockers.com eller skicka ett PM

Permalänk
Medlem

Ett sätt att räkna från decimal till binär är följande:

Vi testar med talet 97:

Talet är udda => första siffran är 1
-vi delar talet med två och avrundar neråt
Talet är 48, jämnt tal => andra siffran är 0
-vi delar talet med två och avrundar neråt
Talet är 24, jämnt tal => tredje siffran är 0
-vi delar talet med två och avrundar neråt
Talet är 12, jämnt tal => fjärde siffran är 0
-vi delar talet med två och avrundar neråt
-Talet är 6, jämnt tal => femte siffran är 0
-vi delar talet med två och avrundar neråt
-Talet är 3, udda tal => sjätte siffran är 1
-vi delar talet med två och avrundar neråt
-Talet är 1, udda tal => sjunde siffran är 1

Talet är alltså: 1100001

Permalänk
Medlem

Kul idé, så typ..

int i = 97; while (i > 0) { print(i & 1); i = i >> 1; }

edit: fast baklänges, haha

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Jag tror jag har koll på detta

Tack för alla svar !

Visa signatur

Intel i5 @ 2,66Ghz | Noctua NH-D14 | 4gb corsair 1600mhz | Asus P7P55D-E PRO | Antec p182 | Corsair 550w |Asus 6950 2gb upplåsta shaders, ASUS 5770 V2|Samsung SpinPoint F3 1 TB |Benq BL2400PT | LG 42PQ6500 | Steelseries Siberia v1 |Asus Xonar DX |Creative EP-630 | AKG K601 | Dynavoice F-6 EX 5.0 |Canton Reference 9.2 DC | Atacama Nexus 6| Onkyo 607