Antworte auf:  C - große Zahlen von JamesNguyen
Forum:  Programmieren, moderiert von: matph

[Zur Forum-Gliederung] [Wie man Fragen beantwortet] [Themenstart einblenden]

  Alle registrierten Mitglieder können Mitteilungen schreiben.
Benutzername:
Passwort:
Nachricht-Icon:                   
                  
              
Nachricht:


 
 


Input assistance tools (JavaScript): [Link extern intern] [MathML?] [$$?]
[fed-area] [LaTeX-inline] [LaTeX-display] [Tikz] [hide-area][show-area] [Source code [num.]][?]
 Show Preview      Write using fedgeo formula editor or Latex.

Smilies for your message:
😃 😄 😁 🙂 🙃 😉 🤗 🤫 🤔 🙄 😴 🤒 😎 😮 😲 😂
🙁 😖 😒 😐 😡 👌 👍 👎 🤢 🤧 🥵 🥶 😵 🤯 😛 😷
Optionen: Deaktiviere HTML in dieser Nachricht
Deaktiviere MATHML in dieser Nachricht. Wenn Dein Text $-Zeichen enthält, die nicht LaTeX-Formeln begrenzen.
Deaktiviere Smilies in dieser Nachricht
Zeige die Signatur (Kann in 'Mein Profil' editiert werden.)
    [Abbrechen]
 
Beachte bitte die [Forumregeln]


Themenübersicht
hyperG
Senior
Dabei seit: 03.02.2017
Mitteilungen: 1503
 Beitrag No.5, eingetragen 2021-09-26 11:10    [Diesen Beitrag zitieren]
\quoteon(2021-02-26 16:56 - JamesNguyen im Themenstart) ... void funktion ( ? zahl ) ; ... größtmöglichen positiven Ganzzahl meines Computer ... \quoteoff Hallo JamesNguyen, "Computer" ist hier zu ungenau, da der Daten-Informationsweg ("rote Faden") von CPU -> Betriebssystem -> Compiler/Bib/Lib -> EXE -> Betriebssystem -> Ausgabe relativ lang ist. Mit c/c++ hast Du bereits die richtige Wahl getroffen, da man hier die größte Vielfalt hat! a) CPU-Begrenzung (Maschinenbefehl): uint64 (2^64) b) Betriebssystem: uint64 c) Compiler: - normale Obergrenze uint64 (2^64) - gcc hat erweiterten Compiler, der uint128 (2^128) kann (gibt's für Linux & Win64 Welt) d) Da Du von "großen Zahlen" sprichst, fangen diese bei mir bei 1 Mio. Stellen an. Das macht man natürlich mit bereits fertig optimierten Bibliotheken. Hier wird nicht mehr die ganze Zahl, sondern ein Pointer/Referenz übergeben. Die beiden schnellsten & bekanntesten kostenlosen Bib. sind: - "GMP" fertige DLL (oder auch statische LIB; Code auch zugänglich) kann in jedes Programm eingebunden werden (unterstützt moderne AVX Befehle; sehr gut optimiert; auch höhere Funktionen; jedoch nur 1 Thread/Kern; viele bekannte Programme SAGE, Julia, Prime nutzen sie) - "YMP": unterstützt auch AVX2 und Multitasking selbst bei Multiplikation & Division! Das schnellste, was es aktuell auf dem kostenlosen Markt gibt! Jedoch ist Wurzel (sqrt) die höchste Funktion, d.h. alles andere muss man sich selbst "bauen". Mehrere Mrd. Stellen kein Problem, wenn man genug RAM hat. Es wäre also hilfreich, wenn Du genau beschreibst, was Du berechnen willst. Es gibt z.B. Fälle, wo ein internes 128-Bit Zwischenergebnis existiert, aber Funktions-In- & Output nur 64 Bit reichen. Da kann man Maschinenbefehle per ASM (was ja c/c++ unterstützt) verwenden: MUL legt das Multiplikations-Ergebnis in 2 64-Bit Register ab, die mit DIV verarbeitet werden können. Das ist schneller als jede Bib. Natürlich hat auch c# den Datentyp BigInteger, aber im Vergleich zu YMP ist er beim Potenzieren großer Zahlen mehrere 10000 mal langsamer als YMP: https://www.lamprechts.de/gerd/Bilder/Vergleich3HochX_Mio.png Grüße

__blackjack__
Aktiv
Dabei seit: 23.09.2021
Mitteilungen: 23
 Beitrag No.4, eingetragen 2021-09-25 21:58    [Diesen Beitrag zitieren]
Der grösstmögliche ganzzahlige Typ ist in `inttypes.h` als `uintmax_t` definiert. Das hat auch den Vorteil, dass der in Zukunft vielleicht auch grösser als 64 Bit werden kann.

JamesNguyen
Aktiv
Dabei seit: 08.11.2020
Mitteilungen: 189
 Beitrag No.3, eingetragen 2021-02-26 17:20    [Diesen Beitrag zitieren]
ok danke!

reik
Aktiv
Dabei seit: 06.01.2010
Mitteilungen: 156
Wohnort: Berlin

 Beitrag No.2, eingetragen 2021-02-26 17:19    [Diesen Beitrag zitieren]
In Anbetracht Deiner anderen Fragen würde ich Dir aus eigener Erfahrung anraten wollen, dass es mehr Freude bereitet sich ein paar Wochen mit "The C Programming Language" von Brian Kernighan und Dennis Ritchie zu beschäftigen und YouTube mit den ganzen historischen Hintergründen zu nutzen. Dieses Lernen in kleinen Löffelportionen bringt es aus meiner Sicht nicht und frustriert nur.

reik
Aktiv
Dabei seit: 06.01.2010
Mitteilungen: 156
Wohnort: Berlin

 Beitrag No.1, eingetragen 2021-02-26 17:13    [Diesen Beitrag zitieren]
https://en.cppreference.com/w/cpp/types/integer

JamesNguyen
Aktiv
Dabei seit: 08.11.2020
Mitteilungen: 189
 Themenstart: 2021-02-26 16:56    [Diesen Beitrag zitieren]
Hallo, angenommen ich habe ein programm #include //Funktionsdeklaration void funktion ( ? zahl ) ; int main ( void ) { funktion ( ? ) ; } //Funktionsdefinition void funktion ( ? zahl ) { ... } icht möchte das die Funktion funktion ( ? zahl ) mit der größtmöglichen positiven Ganzzahl meines Computer in der main-Funktion aufgerufen werden kann. Welcher Datentyp des Parameters macht dann hier Sinn? ist unsigned long long zahl sinnvoll? Danke, James Mein Computer: https://s16.directupload.net/images/210226/q7x3wozf.png

 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]