www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Softwaretechnik und Programmierung" - Deklaration mit Wertzuweisung
Deklaration mit Wertzuweisung < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Deklaration mit Wertzuweisung: Wie gehe ich da vor?
Status: (Frage) beantwortet Status 
Datum: 14:39 So 20.11.2011
Autor: steftn

Aufgabe
Aufgabenstellung:

Weisen Sie i einen ganzzahligen Wert zu, dessen 4 Bytes die Werte 4, 3, 2, 1 haben.
Das Byte mit dem höchsten Stellenwert soll den Wert 4 haben, usw. bis zum Byte
mit dem niedrigsten Stellenwert das den Wert 1 haben soll. Benutzen Sie auf der
rechten Seite der Wertzuweisung eine Literalkonstante, die hexadezimal angegeben
ist!


Hallo,

ich habe bei der oben genannten Aufgabe ein Problem, ich weiß nicht wie das aussehen soll, so vielleicht:

    int werte [] = {1,2,3,4};
    i = werte;

Aber wie mache ich das jetzt mit der hexadezimalen Literalkonstante auf der rechten Seite? Versteh ich irgendwie nicht....
Vielleicht kann mir jeman einen Tipp geben.

Danke :-)

EDIT: Programmiersprache ist C

        
Bezug
Deklaration mit Wertzuweisung: Antwort
Status: (Antwort) fertig Status 
Datum: 15:31 So 20.11.2011
Autor: uhelp

Es wäre sinnvoll die Programmiersprache anzugeben.
Die Syntaxkonstrukte, die du verwendet hast, sind bei vielen zu finden.

Ein HexLiteral hat meist die Form  xZZZZ...
wobei das "x" dem Compiler/Interpreter mitteilt, dass nun eine Hexzahl folgt. Das "Z" stellt eine hexadezimale Ziffer dar (also ein Zeichen vvon 0 bis 9 und A-F) und die Punkte deuten an, dass es noch sehr viel mehr Stellen sein können.

Wollen wir nun einer Integer Variablen 4 Bytes zuweisen,
so müssen wir sie so definieren, dass sie auch 4 Bytes hat.
Das hängt nicht nur von der Hardware ab, sondern auch von so mancher Einstellung und natürlich der verwendeten Programmiersprache ab.

Oft ist ein Long int 4 Bytes. Muss aber nicht.
Die Doku wird dir das offenbaren, oder ein kleines Testprogramm mit
einer Anweisung wie: len(int) oder len(long)

Eine vier in hexadezimaler Schreibweise ist x4,
x3 die 3, x2 die zwei, und x1 die eins.

Damit lautet die Lösung:
x4321

Wie gesagt: Würdest du angeben, mit was du programmierst, könnte man auch präzise antworten.

Da die meisten Rechner heute aber 2 Bytes für int und 4 für long Werte verwenden,
sollte die vollständige Lösung lauten:

long i;
i = [mm] \\x4321; [/mm]

Da der Backslash und das x nicht korrekt dargestellt werden, hier in Worten nochmal  die letzte Zeile:
i =  Backslash x4321
(ohne das Leerzeichen zwischen dem Backslash und x).

    



Bezug
                
Bezug
Deklaration mit Wertzuweisung: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 16:22 So 20.11.2011
Autor: steftn

hallo,

ich habs oben editiert, die Programmiersprache ist C.

Also müsste die Lösung dann so heißen?:

    int werte = 0x1234;
    i = werte;


mfg

Bezug
        
Bezug
Deklaration mit Wertzuweisung: Antwort
Status: (Antwort) fertig Status 
Datum: 17:59 So 20.11.2011
Autor: uhelp

Genau, wie geschrieben:

ZielVariableIntLong = 0x4321

Rechts der Zuweisung steht nun die Literalkonstante 0x4321
Links davon die Variable.

(So ich mich recht entsinne, ist in C diese Schreibweise ( 0xZZZ zulässig.)

Ich denke du scheiterst an dem Begriff "Literalkonstante".
Was verständlich ist, ist der Begriff doch leicht irreführend.

Ein Literal, also eine Zeichenkette, die NICHT in einer Variablen steht, ist immer eine Konstante, aus Sicht des Compilerbauers. Nur ist sie eben nicht über einen Namen erreichbar im Unterschied zu einer "benannten Konstanten".
(Komplilierst und linkst du das Programm, steht im dann vorliegenden Machinencode KEIN Verweis mehr auf diese Zeichenkette. Lediglich die Variable ist noch erreichbar.)

Und dass eine Literalkonstante / Konstante nicht links stehen kann, versteht sich von selbst:
Der LValue (also, was links einer Zuweisung steht) kann keine Konstante sein. Eine Zuweisung wäre ja eine Änderung, was alleine schon der Definition widerspricht. Und selbst wenn du denselben Wert zuweisen wolltest, wäre eine Zuweisung immer noch eine Änderung.

Also können Literalkonstanten und Konstanten immer nur RValues sein (also rechts der Zuweisung) stehen.






Bezug
                
Bezug
Deklaration mit Wertzuweisung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:34 So 20.11.2011
Autor: steftn

mhm, ich habs jetzt so gemacht:

int long = wert;
wert = 0x4321;
i = wert;

Aber leider stimmt da wohl etwas nicht. Ich muss nämlich diese Angabe in ein großes Programm einfügen und es kommt nicht das richtige raus. Hier mal die Teilaufgabenstellung:

[]Klick mich

mhm... irgendwas stimmt an den 0x4321 wohl nicht, weil wenn ich das so schreibe: 0x432101 kommt das richtige raus....

Bezug
                        
Bezug
Deklaration mit Wertzuweisung: Antwort
Status: (Antwort) fertig Status 
Datum: 21:43 So 20.11.2011
Autor: Event_Horizon

Hallo!

Das int besteht aus VIER byte, und jedes byte läßt sich mit zwei HEX-Ziffern angeben. Es heißt daher:

0x04030201

(Die Farben zeigen die einzelnen Bytes)




Bezug
                                
Bezug
Deklaration mit Wertzuweisung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:56 So 20.11.2011
Autor: steftn

wow, danke, jetzt funktioniert es!

Aber leider hab ich das jetzt noch nicht ganz verstanden.

1 Byte sind doch 8 Bits?
Wo sind dann die 8 Bits wenn die Zahl z.b. 0x04 ist?

So vielleicht????
00
01
10
11

puh, keine Ahnung...

Bezug
                                        
Bezug
Deklaration mit Wertzuweisung: Antwort
Status: (Antwort) fertig Status 
Datum: 22:21 So 20.11.2011
Autor: Event_Horizon

Hallo!

Das ist eine Eigenart der hexadezimalen Darstellung von Bytes.

Ein Byte kann man in ein oberes und ein unteres so genanntes "Nibble" von 4 Bit aufteilen. Jede der beiden Ziffern der HEX-Darstellung gibt dann ein Nibble wieder. Denn mit 4 Bit kann man grade 16 Zustände, also 0-F darstellen.

Schaumal:


0000 1111 = 0x0F

1111 0000 = 0xF0

0010 1000 = 0x28

0000 0100 = 0x04

0000 0010 = 0x02


Du siehst, mit dem Trick kann man sehr schnell beliebig lange binäre Zahlen in hexadezimale un umgekehrt umwandeln.


Bezug
                                                
Bezug
Deklaration mit Wertzuweisung: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:54 So 20.11.2011
Autor: steftn

Danke!

Da wär ich ja nie drauf gekommen :-)

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de