Probleme mit dem umgang von eingabe Fehlern



  • @DirkB

    Ah, danke für die Erklärung 🙂

    das war mir garnicht klar, das wir in meinem Buch auch nicht erwähnt 😃
    danke 🙂



  • Sipps schrieb:

    @DirkB

    Ah, danke für die Erklärung 🙂

    das war mir garnicht klar, das wir in meinem Buch auch nicht erwähnt 😃
    danke 🙂

    Und weil die Zeichen '0', '1', '2', ..., '9' laut Asciitable aufeinander folgen, kannst du einfach das Zeichen '0' von jedem Zeichen abziehen und bekommst die Zahlen 0,1,2, ... 9. 🙂



  • ja oder xor 48 bzw. xor 0x30 verknüpfen, geht schneller. 🙄

    jedenfalls sollte man bei einstelligen zahlen, mit denen man nicht rechnen will, immer char verwenden und auf zeichenwerte prüfen.



  • HansKlaus schrieb:

    ja oder xor 48 bzw. xor 0x30 verknüpfen, geht schneller. 🙄

    jedenfalls sollte man bei einstelligen zahlen, mit denen man nicht rechnen will, immer char verwenden und auf zeichenwerte prüfen.

    Kannst du das begründen?



  • HansKlaus schrieb:

    ja oder xor 48 bzw. xor 0x30 verknüpfen, geht schneller. 🙄

    Was das nicht so um 1998 zum letzten mal der Fall?



  • HansKlaus schrieb:

    ja oder xor 48 bzw. xor 0x30 verknüpfen, geht schneller. 🙄

    Mal abgesehen vom xor: 0x30, 48 oder '0' ist bei ASCII identisch. Da ist kein Unterschied im Maschinencode.

    Vermeide Magic Numbers. Das ist schlecht lesbar.



  • Vorsicht mit impliziten Voraussetzungen. C++11 garantiert (2.3), daß die values von '0', '1', ... '9' im Abstand von 1 aufeinander folgen. Deshalb kann man z.B. '4' - '2' berechnen.



  • Andromeda schrieb:

    HansKlaus schrieb:

    ja oder xor 48 bzw. xor 0x30 verknüpfen, geht schneller. 🙄

    jedenfalls sollte man bei einstelligen zahlen, mit denen man nicht rechnen will, immer char verwenden und auf zeichenwerte prüfen.

    Kannst du das begründen?

    additionen benötigen mehr takte als xor-verknüpfungen, da erstere zusätzlich zur eigentlichen summe noch das carry-bit berechnen müssen, während letztere quasi in einem arbeitsgang ausgeführt werden können.



  • HansKlaus schrieb:

    Andromeda schrieb:

    HansKlaus schrieb:

    ja oder xor 48 bzw. xor 0x30 verknüpfen, geht schneller. 🙄

    jedenfalls sollte man bei einstelligen zahlen, mit denen man nicht rechnen will, immer char verwenden und auf zeichenwerte prüfen.

    Kannst du das begründen?

    additionen benötigen mehr takte als xor-verknüpfungen, da erstere zusätzlich zur eigentlichen summe noch das carry-bit berechnen müssen, während letztere quasi in einem arbeitsgang ausgeführt werden können.

    Und den zweiten Satz?



  • naja welchen zweck hat es, bei der abfrage von tastendrücken bzw. von einzelnen zeichen den zahlenwert zu verwenden?



  • HansKlaus schrieb:

    additionen benötigen mehr takte als xor-verknüpfungen, da erstere zusätzlich zur eigentlichen summe noch das carry-bit berechnen müssen, während letztere quasi in einem arbeitsgang ausgeführt werden können.

    Das kannste so pauschal nicht sagen. Die Summe und das Carry-Bit entstehen doch in einem Rutsch. XOR, AND, OR wie auch SUB und ADD müssten gleich schnell sein, nämlich 1 Takt für die eigentliche Operation. Das Laden der Operanden in die Register lassen wir mal unberücksichtigt.

    Relativ langsam sind Multiplikation und Division mit Digitalrechnern, wenn man nicht gerade mit Zweierpotenzen arbeitet.


Anmelden zum Antworten