Archief - [PROG]pascal binair naar decimaal

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

-(orbje)-

Legacy Member
Jow,

is er hier iemand in staat om een binair getal om te zette naar een decimaal getal in een pascal codering ?

Of zelfs al ist in een C of C++ omgeving of maakt al ni uit
(in elk geval via array)...

dus bvb: 01100111

hoe kunt ge tege de pc zegge dat die ene 1 tot de 2de moet verheven worden, maar die ernaast tot de 4de of whatever :s

dank bij voorbaat ;)

killgore

Legacy Member
dus je hebt een array van eentjes en nulletjes?
Ik veronderstel dat je low-bit (dus die die 1 voorstelt) als laatste staat, anders is het gewoon n-i-1 in die array vervangen door i:

Code:
n=bereken_lengte(binArray); //Bereken dus uw lengte eh, hangt in c++ af van type en zo :p.
int resultaat =0;
for(int i = 0; i<n; i--)
{
    resultaat+=binArray[n-i-1]*pow(2,i);
}

Zoiets? resultaat is dan (natuurlijk) een 10-dimensionaal getal :p, dat je dan weer eventueel in een array kan krijgen via een nieuwe lus en het gebruik van de magische % operator:
Code:
int decArray[10];
for(i=0;resultaat!=0;i++)
{
    decArray[i] = resultaat%10;
    resultaat/=10;
}

Typos en kleine foutjes niet uitgesloten, code = c/c++

edit: ik heb dit dus veel te veel in java moeten proggen vorig semester :doh:, belachelijke practica :p.

Da Turtle

Legacy Member
hmm pascal codering... da is super lang geleden. kga 't proberen uit te leggen.
- maak een variable resultaat = 0
- maak een for loop. 0 to 7 (of meer als je getallen groter zijn dan een byte). Ik noem mijn loop variabele nu a.
- In de loop:
* check het (a-7)'de (a - 7 omdat de rechtse bit de minst significante (minste waarde) heeft en de linkse de hoogste) getal uit de array, als het 1 is verhoog je resultaat met 2 tot de macht a (resultaat = resultaat + 2^a)

zo zul ja als je alle bits overlopen hebt je uitendelijke resultaat krijgen.

ff aantonen aan de hand van jou voorbeeld:
status: resultaat = 0, binair getal = 01100111
- lus a=0
het 7e (7-0) getal in de array 01100111 is gelijk aan 1. resultaat = resultaat + 2^0
status: resultaat = 1
- lus a=1
het 6e (7-1) getal uit de array 01100111 is gelijk aan 1. resultaat = resultaat + 2^1
status: resultaat = 3
- lus a=2
het 5e (7-2) getal uit de array 01100111 is gelijk aan 1. resultaat = resultaat + 2^2.
status: resultaat = 7
- lus a=3
het 4e (7-3) getal uit de array 01100111 is gelijk aan 0. er gebeurt niets

en dan zo verder, verstaat ge?

// edit 1000: aangepast :p
// edit 1001: de andere edits weg gedaan om verwarring te voorkomen, nu is hopelijk alles in orde. Het resultaat van je voorbeeld zou moeten 103 zijn

killgore

Legacy Member
103, zoals ik zei: ALS uw low-bit rechts staat (wat meestal toch zo is :unsure: )

Als uw high bit rechts zou staan kom je idd 230 uit

Da Turtle

Legacy Member
hmm ja, dat dacht ik eigelijk ook, maar ik ben totaal in de war. Misschien is het de warmte :unsure:
oké, dan moet je in plaats van het a'de getal het (7-a)'de getal uit de array halen om te controleren als het 0 of 1 is, kzal het aanpassen.

// edit: 't is in orde nu

killgore

Legacy Member
Da Turtle zei:
hmm ja, dat dacht ik eigelijk ook, maar ik ben totaal in de war. Misschien is het de warmte :unsure:
oké, dan moet je in plaats van het a'de getal het (7-a)'de getal uit de array halen om te controleren als het 0 of 1 is, kzal het aanpassen.
We kunnen natuurlijk nog altijd een gehele lezing over endianess geven zodat de threadstarter volledig zot wordt :p.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan