Hogy tudom ezt megcsinálni Visual Basic-ben?
"Excel programozunk most"
Biztos nem.
Meddig is jutottál, hol akadtál el?
Szia.
2-es számrendszerben is ugyan müködik minden mint 10-es számrendszerben, csak ott nem egyesek(10^0), tizesek(10^1), százasok(10^2), ezresek(10^3) stb. vannak, hanem a kettes számrendszernek megfelelő helyi értékek, tehát egyesek(2^0), kettesek(2^1), négyesek(2^2), nyolcsasok(2^3) stb, illeve törtrésznél pediglen, ugyan lefelé menve fél(2^-1), negyed(2^-2), stb van.
Ha most megvan a számod, mit kell vele tenni (1000011.10101) :
Látszik hogy szét kell szedni a tizedes pontnál (itt kettedes pont). Ezt VBA-ban INSTR-rel megkapod. aztán MID-del az INSTR-rel megkaptt poziciónál szétszeded a stinget két részre, lesz egy egész rész és lesz egy törtrész.
Egész rész feldolgozása :
Egy ciklussal végig mész az egész részen a végétől az eleje felé és az akltuális poziciónál lévő értéket megszorzod kettő ahanyadik hatványával ahányadik a pozicio -1. tehát a pl. egészrésze : 1000011,
ciklusértékek,számérték*kettő hatvány=részösszeg
1,1*2^(1-1)=1
2,1*2^(2-1)=2
3,0*2^(3-1)=0
4,0*2^(4-1)=0
5,0*2^(5-1)=0
6,0*2^(6-1)=0
7,1*2^(7-1)=64
A részeredményeket összeadod megkapod az egész részét a számnak : 1+2+0+0+0+0+64 = 67
A törtrésznél foditva van az eleje felől megyünk ciklussal a vége felé és kettőnek a minusz hatványával számulunk , tehát törtrész : 10101
ciklusértékek,számérték*kettő hatvány=részösszeg
1,1*2^(-1)=0.5
2,0*2^(-2)=0.0
3,1*2^(-3)=0.125
4,0*2^(-4)=0.0
5,1*2^(-5)=0.03125
Itt is összegzed a részeredményeket és megvan a törtrész :
0.5+0+0.125+0+0.03125=0.65625
Összeadod az egész részt és a tört részt és kész vagy.
Tehát szétszeded a számot két részre (egész rész, tört rész), Két ciklus, egy az egész résznek, egy a tört résznek, szummázás, kettő pozitiv és negativ hatványáival való szorzás (vagy szorzás és osztás), és összeadás, ennyi lenne a feladat.
Nem csinálom meg helyetted a feladatod, de ha elakadsz és mutatsz kódot akkor szivesen segitek.
Sok sikert. Üdv.
Egyszerűbb, ha megérted a kettes számrendszer lényegét, mert onnantól kezdve egyedül, segítség nélkül is képes vagy megírni a konverziót, akár oda-vissza is.
Helyiérték:
64, 32, 16, 8, 4, 2, 1
Szám:
10011
balról jobbra beszorzod a szám helyiértékén található számjegyet a helyiértékkel, majd ezeket az eredményeket összeadva kijön a decimális érték.
1 x 1 +
1 x 2 +
0 x 4 +
0 x 8 +
1 x 16 = 19.
Persze, ahol nullát találsz, ott a szorzást mellőzheted is. De ez gondolom kiderült a példából is.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!