biner

Nieuwe Liberty BASIC programmeurs kunnen hier om hulp vragen.

Moderators: anthonio, Abcott

biner

Berichtdoor pinda_kaas » wo jan 05, 2011 5:00 pm

ik wil een programma maken dat iets om zet in biner (spel volgens mij niet goed) dus alleen 0 en 1 tjes maar ik heb geen idee hoe dit moet
pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: biner

Berichtdoor Gordon » zo jan 09, 2011 8:55 pm

Hallo Pindakaas,

Alleen binaire getallen bestaan uit nullen en eenen, dus ik neem aan
dat je een getal wilt omzetten in het binaire stelsel?

Maak maar een eenvoudig programma waarbij je een
getal invoert en als uitkomt de binaire weergave krijgt.

Tip:
Deel het getal door 2 en plaats de rest na deling (1 of 0) in je binaire weergave.
Trek van je start getal de deling en herhaal.

Gebruik maximaal 4 programma regels,.... anders is deze opgave niet leuk.

Gordon.
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: biner

Berichtdoor Gordon » zo jan 09, 2011 9:06 pm

Oeps.... ik heb zelf 6 regels nodig.

Gordon

Code: Selecteer alles
for t = 0 to 255
    c = t
        for n = 0 to 7
            d = c/2
            c = int(d)
        print ((d-c)>0);  'print int((d-c)+.5);
        next n
    print
next t
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: biner

Berichtdoor glpape » ma jan 10, 2011 9:28 pm

Gordon hallo,

Die toverformule in je listing is nieuw voor me :
print ((d-c)>0)
ik heb er lang naar gekeken en nu denk ik dat ik het kan vertalen als :

if (d-c) > 0 dan is de return van deze formule 1
en anders is de return van deze formule 0.

Kun je dit bevestigen, ook wel voor anderen misschien.

Hoe kom je hier aan ? Ik heb dit nooit gezien in de helpfile of in AlyceW's CompanionBook.

Doet me denken aan :
if n then print "OK" wat werkt als
if n <> 0 then print "OK".

Zo besparen we ons een paar toetsaanslagen maar ik vind het wel minder inzichtelijk.

Vr groet,
George Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Re: biner

Berichtdoor Gordon » di jan 11, 2011 12:27 am

Hallo George en anderen,

Ik had het moeten houden bij
print int((d-c)+.5);

maar
print ((d-c)>0); is het zuivere werk.
Hier vragen wij LB om te printen of (d-c) > 0
Het antwoord van LB kan alleen zijn: ja of nee. (1 of 0)

Eigenlijk willen wij weten of de rest na de deling 0 of 1 is.
In principe zou je dus de mod functie moeten kunnen toepassen.
Maar dat lukte mij niet snel..... want ik hield afrondings fouten.

Gordon
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: biner

Berichtdoor glpape » di jan 11, 2011 3:18 pm

Gordon hallo,

Dank je wel voor je uitleg.

Wel zag ik dat je listing de binaire code in spiegelbeeld gaf. Omdat ik niet meteen begreep hoe het oorspronkelijk bedoeld moet zijn geweest heb ik er zelf maar een draai aan gegeven. De eerste paar nummers kloppen nu, en acht is duizend en "tien is tien tien", dus de rest zal ook wel goed zijn.

Je zo-heel-beknopte formule heb ik zorgvuldig gehandhaafd, ik wil er zelf ook aan wennen.

Vr groet,

George Pape.

Code: Selecteer alles
dim bn$(256)
   for t = 0 to 255
   c = t
      for n = 0 to 7
      d = c/2
      c = int(d)
      bn$(t) = (d-c)>0; bn$(t)           'bn$(t)=int(d-c+0.50);bn$(t)
      next n
   print using("###", t); "   "; bn$(t)
   next t
end
Laatst bijgewerkt door glpape op di jan 11, 2011 10:23 pm, in totaal 1 keer bewerkt.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Re: biner

Berichtdoor glpape » di jan 11, 2011 5:33 pm

Dit gooi ik er nu uit.

George Pape.
Laatst bijgewerkt door glpape op di jan 11, 2011 10:25 pm, in totaal 3 keer bewerkt.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Re: biner

Berichtdoor pinda_kaas » di jan 11, 2011 5:55 pm

Gordon schreef:Oeps.... ik heb zelf 6 regels nodig.

Gordon

Code: Selecteer alles
for t = 0 to 255
    c = t
        for n = 0 to 7
            d = c/2
            c = int(d)
        print ((d-c)>0);  'print int((d-c)+.5);
        next n
    print
next t


Hier snap ik echt hele maal niks van.
Maar ik wil nu niet 8 maar 32 uit reken en dat het dan past.
Dus niet dat de lijst herhaalt wordt.
En dat het programma ook uit rekent dat 4 maar 16 uitkomsten heeft en dat 32 ook maar ... uitkomsten.
Heeft en dat het programma dan op houdt en dus niet gaat her halen
pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: biner

Berichtdoor glpape » do jan 13, 2011 6:34 pm

Pindakaas schreef: ...... dat 4 maar 16 uitkomsten heeft en dat 32 ook maar ... uitkomsten.

Vier binary digit 's (? of binary digit 's ?) kunnen (2^4) waardes aannemen.
32 bits kunnen (2^32) waardes aannemen.
Als je een LB programma wilt maken dat je dit vertelt dan kun je deze simpele formule gebruiken.

Begrijp ik dat je ook heel grote getallen in binaire code wilt weergeven? Mijn modificatie van Gordon's programma 2 dagen geleden ging tot 8 bits. Je kunt het makkelijk verder laten rekenen door de array en de loops wat aan te passen, maar 32 bits haal je niet: ik runde vandaag 16 bits ( 0 tot (2^16) - 1) en dat duurde 7 minuten, dus 32 bits duurt nog weer 2^16 keer zo lang.

Maar op Wikipedia.nl onder < binaire talstelsel > staat hoe je handmatig alle getallen kunt omzetten van decimaal naar binair, of omgekeerd. Niet erg moeilijk, en best te vertalen in een LB programma.

Succes !

George Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Re: biner

Berichtdoor pinda_kaas » ma jan 31, 2011 9:49 pm

ik ben nu 32 aan het uit reken duurt zeker 4 tot 5 dagen bezig
pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: biner

Berichtdoor glpape » vr feb 04, 2011 6:25 pm

Je schreef:
< ik ben nu 32 aan het uit reken duurt zeker 4 tot 5 dagen bezig >

Wil je 2^32 zien in binaire code ? Is dat wat je wilt, en is dat alles wat je wilt ?

Als je de eerste paar getallen in binaire code zet ga je het patroon zien:
0 = 00000
1 = 00001
2 = 00010
3 = 00011
4 = 00100
5 = 00101
6 = 00110
7 = 00111
8 = 01000
9 = 01001
. . . . en zo voort. Dus:
2^0 = 00001, een een zonder nullen erachter;
2^1 = 00010, een een met een nul;
2^2 = 00100, een een met twee nullen;
2^3 = 01000, een een met drie nullen. En zo voort.

2^32 is een een met 32 nullen erachter.

Vr groet,

George Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Re: biner

Berichtdoor bluatigro » vr feb 10, 2012 11:49 am

dit is volgens mij de snelste manier :

Code: Selecteer alles
function bin$( x )
   for m = 0 to 32
      if x and 2 ^ m then
         uit$ = "1" + uit$
      else
         uit$ = "0" + uit$
     end if
  next m
  while left$( uit$ , 1 ) = "0"
    uit$ = right$( uit$ , len( uit$ ) - 1 )
  wend
  bin$ = uit$
end function
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm


Keer terug naar Beginner

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron