mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nibbles tauschen


Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi leute

nach lange suchen bin ich immer noch nicht drauf gekommen

wie kann ich mit GCC di Nibbles tauschen

also so

00001111 -> 11110000

an sich  reicht es mir auch so

xxxx1111-> 11110000

gibt es dafür einen routine?


danke schon mal

Autor: Thorsten Fritzke (thorsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für den 2. Fall:

 x <<= 4;

Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also

test=0b01011111;
test <<4;

würde in test

11110000 stehen?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>00001111 -> 11110000
x = (x>>4);

>00001111 -> 11110000
x = (x<<4);

Es werden immer Nullen nachgezogen.

Willst du wirklich tauschen, dann so.
x = (x<<4) | (x>>4);

(Der Compiler sollte daraus ein SWAP machen)

Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi super danke =)

es funzt

jetzt noch mal kurz ne frage am rande


ich habe in 2 Arrays werte stehen z.b

array(1,3);
x
array(5,5);
=
array(7,1,5);

mathematische operation wäre 13 x 55 =715

wie gehe ich da am besten vor?

array auszählen und dann mit dem 8bit register arbeiten?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie würdest du es denn von hand machen?

Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ich hätte beide arrays ausgezählt damit das in 2 regsiter steht.
und dann die beiden register multipliziert und wieder aufgeteilt.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>array(1,3);
x
array(5,5);
=
array(7,1,5);

Hä? Das musst du mal genauer erklären...!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Lipinsky wrote:
>>array(1,3);
> x
> array(5,5);
> =
> array(7,1,5);
>
> Hä? Das musst du mal genauer erklären...!

in 'array' steht eine BCD Zahl.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ulf Cramme wrote:
> ja ich hätte beide arrays ausgezählt damit das in 2 regsiter steht.
> und dann die beiden register multipliziert und wieder aufgeteilt.

Falscher Ansatz.
Wie multiplizierst du denn von Hand?

Du fängst bei den niederwertigsten Stellen an und multiplizierst jede 
Stelle mit jeder, wobei du einen Übertrag mitschleifst. Und zum Schluss 
werden die einzelnen Teilsummen geeignet versetzt (also mit 10 
multipliziert) zusammengezählt. Erinnere dich einfach mal daran, wie du 
das in der Grundschule gelernt hast.

Und genau dasselbe ahmst du jetzt mit einem Programm nach.

  13 * 57

                    5 * 3 macht 15, also 5 anschreiben und 1 Übertrag
                    5 * 1 macht 5 plus die 1 Übertrag mach 6

                    7 * 3 macht 21, 1 anschreiben, 2 Übertrag
                    7 * 1 macht 7, plus die 2 Übertrag macht 9


  13 * 57
 ---------
  65
   91

                   650 + 91 macht 741
 -----
  741

13 * 57 -> 741

Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahhh =) hätte man auch drauf kommen können

danke danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.