Forum: Mikrocontroller und Digitale Elektronik bin zahl zerlegen bzw in dieser von pos bis pos suchen


von gast (Gast)


Lesenswert?

hallo

habe zwar in Bascom die möglichkeit gefunden in einem string ab pos x zu 
suchen, aber leider aber leider nichts gefunden wie man den string 
zerlegen kann

a1=&b01000000
a2=&b01010001
a2=&b01010010
a2=&b01010011
b=001
ich möchte das er zb. aus a1 mit b verglichen wird ob die letzten 3 
zeichen gleich sind wenn ja dann soll er mir die zeichenvon pos 4 und 
pos 5 ausgeben

von Falk B. (falk)


Lesenswert?

@ gast (Gast)

>suchen, aber leider aber leider nichts gefunden wie man den string
>zerlegen kann

MID()

>a1=&b01000000
>a2=&b01010001
>a2=&b01010010
>a2=&b01010011
>b=001
>ich möchte das er zb. aus a1 mit b verglichen wird ob die letzten 3
>zeichen gleich sind wenn ja dann soll er mir die zeichenvon pos 4 und
>pos 5 ausgeben

Das sind aber Binärzahlen, keine Strings.

MFG
Falk

von Niels H. (monarch35)


Lesenswert?

Falk Brunner wrote:
> @ gast (Gast)
>
>>suchen, aber leider aber leider nichts gefunden wie man den string
>>zerlegen kann
>
> MID()

Falk wird langsam zum Bascom spezialisten :)

> Das sind aber Binärzahlen, keine Strings.

Was er möchte sind vermutlich logische Verknüpfungen. Gibts sowas auch 
in Bascom? :)

von gast (Gast)


Lesenswert?

ok stimmt das es binärzahlen sind, aber wenn ich damit arbeite ist es 
sicher einfacher als string diese anzugeben und zu verändern und später 
als binäre zahl zu definire um sie als als i2c adr. zu verwenden.

oder sehe ich das falsch?

von Karl H. (kbuchegg)


Lesenswert?

gast wrote:
> ok stimmt das es binärzahlen sind, aber wenn ich damit arbeite ist es
> sicher einfacher als string diese anzugeben und zu verändern und später
> als binäre zahl zu definire um sie als als i2c adr. zu verwenden.
>
> oder sehe ich das falsch?

Das siehst du falsch.

Es ist sicher nicht einfacher eine Zahl zuerst in einen String
zu wandeln um dann mit Stringfunktionen rum zumachen.

Beispiel: Man möchte eine 2-stellige Zahl in die einzelnen
Ziffern zerlegen.
Ein bischen Nachdenken über das was man in der Grundschulzeit
gelernt hat, liefert

  Zehner = Zahl / 10
  Einer = Zahl - ( 10 * Zehner )

also einfach nur ein bischen Rechnerei. Und wenn Computer
etwas wirklich gut können, dann ist das rechnen.

AUs demselben Grund gibt es auch die binären Operationen
und und oder, die in BASCOM wahrscheinlich AND bzw. OR
heissen.

  Zahl1 = a1 AND &b00000111

zu schreiben um aus a1 die untersten 3 Bit in eine neue
Variable zu extrahieren, dürfte bedeutend einfach sein,
als da mit Strings rumzumachen.

von gast (Gast)


Lesenswert?

im endefekt geht es um eine audio steuerung

4x Stereo Eingang

&b010 für eingang
dann 00 <- der wert mus geändert werden steht in 4 stufen kann 
lautstärke angepasst werden
dann 000 oder 001 oder 010 oder 011 adresse des audioeingangs

das ganze gibts dann noch einam für bass trable und für jeden der 4 
ausgänge(LF,RF,LR,RR)

und dafür wollte ich eine reglung erstellen

von Falk B. (falk)


Lesenswert?

@ gast (Gast)

>&b010 für eingang
>dann 00 <- der wert mus geändert werden steht in 4 stufen kann
>lautstärke angepasst werden
>dann 000 oder 001 oder 010 oder 011 adresse des audioeingangs

Das ganze ist schlichte Bitmanipulation. Geht in BASCOM fast so wie 
in C.

Siehe Handbuch, Language Fundamentals, Logic Operators.

Zum Schieben gibts in BASCOM einen extra Befehl. SHIFT (Hear, Hear)

MFG
Falk

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

gast wrote:
> ok stimmt das es binärzahlen sind, aber wenn ich damit arbeite ist es
> sicher einfacher als string diese anzugeben und zu verändern und später
> als binäre zahl zu definire um sie als als i2c adr. zu verwenden.
>
> oder sehe ich das falsch?

That's what BASIC does to our kids...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.