myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Programmieren spanneder gestalten? (https://mygully.com/showthread.php?t=1925982)

Dennka 23.11.09 21:20

Hab ein 32 Bit System

Das sieht mehr sehr zu komplex aus, verstehe da kaum was, besonders das mit dem emulieren.

Ich möchte nämlich nur ein Programm schreiben, das es mir alle Zahlen im 16 stelligen Bereich nur aufschreibt (nix rechnet oder ähnliches)

urga 23.11.09 22:47

Zitat:

Das sieht mehr sehr zu komplex aus, verstehe da kaum was, besonders das mit dem emulieren.
in dem fall kurz und knapp: vergiss es. 2^32 ist und bleibt deine magische grenze. vorerst jedenfalls :T

Dennka 18.12.09 19:29

Also das mit der Fakultät hab ich hinbekommen, versteh aber imme rnoch nicht wie er es dadurch so hohe Zahlen ausgeben kann. Aber hat sich erledigt :)

urga den Code für die änderung der Farbe der Schrift ist sehr komplex. Ich hab da einen leichteren gefunden:

Code:

[...]

system("color 2");  //Zahl Variiert^^

[...]


christophkrner 04.01.10 08:31

also ich finde programmiereren immer am schönsten, wenn man wie beim "programmieren" von Adobe Dreamweaver wenig selber machen muss und es schon viele Einstellungsmöglichkeiten gibt.

So spare ich mir Nerven, und Zeit. Und es ist entspannend. Sonst wenn ich nur den Editor oder auch Notepad öffne, und zu programmieren anfang, bin ich nach kurzer Zeit schon genervt warum irgendwas nicht funktioniert.

Und in VB finde ich die Einfachheit so schön.

Banghard 06.01.10 01:46

Zitat:

Zitat von urga (Beitrag 20175357)
2^32 == 4294967296
das ist eine 10-stellige zahl...

falls du ein 64-bit system hast:
2^64 == 8589934592 immer noch 10-stellig.
mehr gibt dein prozessor jedenfalls für native typen (int, long, long long) einfach nicht her.
wenn du mehr stellen willst musst du das emulieren. siehe n! thread.

Erstens ist das komplett falsch gerechnet. 2^64 ist nicht das Doppelte von 2^32 :rolleyes:

Das richtige Ergebnis ist natürlich 18446744073709551616.

Ich glaube du bringst da sowieso ein paar Sachen durcheinander. Du berechnest über die Busbreite vom Adressbus die Anzahl der möglichen Byte, die adressiert werden können. Bei einem 32 Bit System sind das folglich 2^32 mögliche Kombinationen, du kannst also über 4 Milliarden Bytes = 4 Gigabyte damit adressieren. Bei einem 64 Bit System sind es also 2^64 mögliche Bytes, die dir ermöglichen rein theoretisch über 16000 Terabytes an Speicher zu adressieren. Das sind über 16 Milliarden Gigabytes.

Deine Rechnungen haben grundsätzlich erstmal nichts mit der Größe von Datentypen zu tun. Ein Char ist 8 Bit groß, belegt also eine Speicheradresse. Ein normales Int ist 32bit groß, belegt also schonmal vier Adressen. Und ein Long ist 64bit = 8 Adressen = 8 Bytes groß und ermöglicht dir wie schon beschrieben bis zu 18446744073709551616 zu rechnen.

@Dennka

Selbstverständlich kannst du mit einem unsigned long mit deinen 16stelligen Zahlen rumrechnen.

gosha16 06.01.10 05:58

ein int ist nicht immer 32 bit lang. das kommt aufs system an. lediglich bei char kann man von einer festen größe ausgehen.

Banghard 06.01.10 07:33

Ja, da hast du Recht. Es kommt auch auf die verwendete Hochsprache wiederum an. Ich meinte das auch eher als Rechenbeispiel.

gosha16 06.01.10 13:51

Es kommt auf nicht auf die Sprache sondern auf das System (bzw die zugrunde liegende Architektur) an.

Banghard 06.01.10 15:45

Natürlich kommt es auch auf die Hochsprache an. Auf Hardwareebene werden vom CPU bestimmte integrale Datentypen unterstützt. In manchen Hochsprachen ist man aber wesentlich flexibler, denn dort werden Vielfache des Hardwaremaximums unterstützt. C/C++ bietet zum Beispiel auch die Möglichkeit int von 8 - 64 Bit Größe zu deklarieren.

Die Größe der deklarierbaren Variablen richtet sich also nach System UND verwendeter Hochsprache.

gosha16 06.01.10 18:45

Das sind aber Komplexe Datentypen die aus mehreren Grunddatentypen bestehen, in C++ z.B. struct, class, und enum. Das ist schön das ich 4 Ints aneinandereihen kann. Int an sich ist und bleibt 32 Bit auf nem 32 Bit System. Das aber bei rechnungen mit diesen zusammengesetzten Datentypen ganz anders gearbeitet wird solltest du auch beachten.

Banghard 06.01.10 21:43

So wie du das beschreibst, ist es natürlicher völliger Nonsens. Aber bleib ruhig bei deiner Annahme, ich hab auch nicht die Zeit hier stundenlang "Nachhilfe" zu leisten.

Ansonsten einfach mal hinsichtlich 32/64bit Architekturen einlesen und vor allem zu den Unterschieden zwischen integralen und komplexen Datentypen.

gosha16 06.01.10 22:02

erklärs doch wenn du 's besser weißt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.