WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 11.11.2002, 22:40   #1
bach
Veteran
 
Registriert seit: 06.08.2000
Beiträge: 385


Ausrufezeichen Grundlegende C Frage !

ich habe 2 8bit register
a = xxxxxxxx
b = yyyyyyyy

ich möchte die beiden register in ein 16bit register schreiben nach folgenden muster

c = xxxxxxxxyyyyyyyy

wie mache ich das am einfachsten ?
bach ist offline   Mit Zitat antworten
Alt 11.11.2002, 22:58   #2
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

c = (a << 8) ¦ b
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 11.11.2002, 23:30   #3
bach
Veteran
 
Registriert seit: 06.08.2000
Beiträge: 385


Standard

könntest du die funktion des codes kurz erklären ?
bach ist offline   Mit Zitat antworten
Alt 12.11.2002, 07:14   #4
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

ganz einfach: du shiftest die 8 bits von x um 8 stellen nach links, dann steht da

xxxxxxxx00000000 und dann machst du ein bitweises oder mit 00000000yyyyyyyy
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 12.11.2002, 19:25   #5
bach
Veteran
 
Registriert seit: 06.08.2000
Beiträge: 385


Standard

danke für die rasche antwort und erklärung !

eine frage habe ich allerdigs noch !

ich habe eine zahl nach folgenden format

ergebniss = 189,6583454596;

wie kann ich einfachsten lösen das ich die Ziffern der Zahl einzeln habe !

am schluss hätte ich gern
h = 1;
z = 8;
e = 9;
n = 6;
m = 5;
bach ist offline   Mit Zitat antworten
Alt 12.11.2002, 19:30   #6
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

h = ergebnis / 100;
z = ergebnis - (h * 100);
e = ergebnis - (h * 100 - (z * 10));
...

wobei h, z und e vom typ long sind. so sollts funktionieren
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 12.11.2002, 19:37   #7
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

funktinoiert nicht ganz so, weil du für z bei zb 345 45 rauskriegst, nicht 4, du hast das /10 vergessen in der zweiten zeile.

andere version wär zb:

t = zahl % 10000 / 1000;
h = zahl % 1000 / 100;
z = zahl % 100 / 10;
e = zahl % 10;

kannst hübsch in eine schleife verpacken auch.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 12.11.2002, 19:40   #8
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

war ein schlampigkeitsfehler von mir. danke für den hinweis!
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 12.11.2002, 20:05   #9
Clystron
Hero
 
Registriert seit: 07.02.2001
Alter: 46
Beiträge: 805


Clystron eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Who-T
c = (a << 8) ¦ b
Ich würd noch ein paar Typecasts machen, sonst kanns passieren dass nur b rauskommt dabei.

Annahme c ist ein unsigned int, a und b sind unsigned chars

c =(((unsigned int)a) << 8) | (unsigned int)b;

Schaut jetzt vielleicht etwas komplizierter aus, aber was ich schon mit "simplen" Shiftoperationen erlebt habe....

mfG
Clystron
____________________________________
God, Root, what is difference?
Clystron ist offline   Mit Zitat antworten
Alt 24.11.2002, 15:24   #10
bach
Veteran
 
Registriert seit: 06.08.2000
Beiträge: 385


Standard Re: Grundlegende C Frage !

Zitat:
Original geschrieben von bach
ich habe 2 8bit register
a = xxxxxxxx
b = yyyyyyyy

ich möchte die beiden register in ein 16bit register schreiben nach folgenden muster

c = xxxxxxxxyyyyyyyy

wie mache ich das am einfachsten ?

wie kann ich das umgekehrt realisieren ?


ich habe ein 16Bit register c und möchte es in 2 8Bit register teilen !
bach ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:36 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag