Ganze Zahlen Flashcards

Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereiche von 𝚒𝚗𝚝 und 𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝.

1
Q

Betrachte den Ausdruck:
𝟿 * 𝚌𝚎𝚕𝚜𝚒𝚞𝚜 / 𝟻 + 𝟹𝟸
Welches sind seine Bestandteile?

A

Drei Literale: 𝟿, 𝟻, 𝟹𝟸
Drei Operatoren: *, +, /
Eine Variable: 𝚌𝚎𝚕𝚜𝚒𝚞𝚜

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Nach welchen Regeln werden Ausdrücke in C++ geklammert?

A

(1) Präzendenz: Multiplikative Operatoren binden stärker als additive Operatoren (“Punkt vor Strich”).
(2) Assoziativität: Arithmetische Operatoren sind immer linksassoziativ, d.h. bei gleicher Präzedenz wird von links nach rechts ausgewertet.
(3) Stelligkeit: Unäre Operatoren vor binären Operatoren, z.B. -𝟹 - 𝟺 wird zu (-𝟹) - 𝟺.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Betrachte die Zuweisung 𝚊 = 𝚋 = 𝚌. Was für Werte haben 𝚊, 𝚋 und 𝚌 und warum?

A

𝚊 = 𝚋 = 𝚌 ist aufgrund der Rechtsassoziativität des Zuweisungsoperators gleich 𝚊 = (𝚋 = 𝚌). Somit ist haben alle drei Werte den Wert 𝚌.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Betrachte die Ausdrücke:
(1) 𝟿 * 𝚌𝚎𝚕𝚜𝚒𝚞𝚜 / 𝟻 + 𝟹𝟸
(2) 𝟿 / 𝟻 * 𝚌𝚎𝚕𝚜𝚒𝚞𝚜 + 𝟹𝟸
Für 𝚌𝚎𝚕𝚜𝚒𝚞𝚜 = 𝟷0, was für Werte hätte die jeweilige Ausgabe mathematisch gesehen? Was für Werte hätte sie in C++?

A

Mathematisch:
9 * 10 / 5 + 32 ⇔ 9 / 5 * 10 + 32 ⇔ 50.

In C++:
𝟿 * 𝟷0 / 𝟻 + 𝟹𝟸 ⇔ (𝟿 * 𝟷0) / 𝟻 + 𝟹𝟸 ⇔ 𝟻0.
Da der Divisionsoperator für 𝚒𝚗𝚝 jedoch nur ganzzahlige Divison erlaubt, ist 𝟿 / 𝟻 ⇔ 𝟷 und somit:
𝟿 / 𝟻 * 𝟷0 + 𝟹𝟸 ⇔ (𝟿 / 𝟻) * 𝟷0 + 𝟹𝟸 ⇔ 𝟷 * 𝟷0 + 𝟹𝟸 ⇔ 𝟺𝟸, aufgrund der Linksassoziativität des Divisionsoperator.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was machen die Inkrement- und Dekrement-Operatoren? Welche Operatoren gibt es und wie unterscheiden sie sich?

A

Erhöhen / Erniedrigen einer Zahl um 1.
Man unterscheidet zwischen:
Post-Inkrement 𝚎𝚡𝚙𝚛++ und Post-Dekrement 𝚎𝚡𝚙𝚛–, wobei der alte Wert von 𝚎𝚡𝚙𝚛 als R-Wert zurückgegeben wird, sowie
Prä-Inkrement ++𝚎𝚡𝚙𝚛 und Prä-Dekrement –𝚎𝚡𝚙𝚛, wobei der neue Wert von 𝚎𝚡𝚙𝚛 als L-Wert zurückgegeben wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
Für folgenden Programmausschnitt, welche Werte werden in den jeweiligen Zeilen ausgegeben?
𝚒𝚗𝚝 𝚊 = 𝟽;
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 << ++𝚊 << "\𝚗";
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 << 𝚊++ << "\𝚗";
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 << 𝚊 << "\𝚗";
A

𝚒𝚗𝚝 𝚊 = 𝟽;
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 &laquo_space;++𝚊 &laquo_space;“\𝚗”; (Ausgabe: 8)
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 &laquo_space;𝚊++ &laquo_space;“\𝚗”; (Ausgabe: 8)
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 &laquo_space;𝚊 &laquo_space;“\𝚗”; (Ausgabe: 9)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welcher der beiden In-/Dekrement-Operatoren ist effizienter und warum?

A

Prä-Inkrement ++𝚎𝚡𝚙𝚛 ist dem Post-Inkrement 𝚎𝚡𝚙𝚛++ zu bevorzugen, da beim Prä-Inkrement der der Wert gleich von der 𝚎𝚡𝚙𝚛 abgelesen werden kann, während beim Post-Inkrement die alten Werte zuerst gespeichert und dann wieder “geholt” werden müssen.
Das Gleiche gilt für Dekrement-Operatoren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Zu welchem arithmetischen Ausdruck ist 𝚊 += 𝚋 äquivalent?

A

𝚊 += 𝚋 ⇔ 𝚊 = 𝚊 + 𝚋

Das Gleiche gilt für: -=, *=, /= und %=.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Sei b eine Zahl zur Basis 2. Welcher Zahl entspricht: bₙbₙ₋₁ … b₁b₀ im Binärzahlensystem?
Welcher Zahl entspricht 𝟷0𝟷0𝟷𝟷?

A

bₙbₙ₋₁ … b₁b₀ ⇔ bₙ * 2ⁿ + … + b₁ * 2 + b₀.

𝟷0𝟷0𝟷𝟷 =
1 * 2⁵ + 0 * 2⁴ + 1 * 2³ + 0 * 2² + 1 * 2¹ + 1 * 2⁰ = 43.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie funktioniert das Hexadezimalsystem? Wie werden die Zahlen repräsentiert?

A

Das Hexadezimalsystem funktioniert gleich wie das Binär- oder Dezimalsystem, einfach zur Basis 16:
hₙhₙ₋₁ … h₁h₀ ⇔ hₙ * 16ⁿ + … + h₁ * 16 + h₀, für eine Zahl mit Ziffern h.
Die Zahlen 1-9 vom Dezimalsystem bleiben auch in Hexadezimal die Zahlen 1-9, jedoch werden 10-15 in Hexadezimal mit den Buchstaben a-f bezeichnet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welcher Zahl im Dezimalsystem entspricht 0𝚡𝚏𝚏 im Hexadezimalsystem?
Tipp: 0𝚡 ist ein Präfix zur Kennzeichnung, dass die folgende Zahl im Hexadezimalsystem ist.

A

0𝚡𝚏𝚏 = 15 * 16¹ + 15 * 16⁰ = 225.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wann kommt es zu einem Über- / Unterlauf und was sind die Folgen?

A

Sei B ein Bit, so umfasst der Wertebereich eines Typs 2ᴮ-1, da auf jedem Bit eine Zahl 1 oder 0 gespeichert werden kann. Bei den meisten Plattformen hat man für einen Wertebereich 32 oder 64 Bit zur Verfügung. Wird durch eine arithmetische Operation eine Zahl “erreicht”, die mit mehr als der vorgegebenen Anzahl Bits dargestellt werden muss, kommt es zum Überlauf und nur die letzten Bits im Wertebereich werden dargestellt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ergibt 15 + 1 in einem 4-Bit-Binärsystem?

A

Im 4-Bit-Binärsystem wird 15 mit 𝟷𝟷𝟷𝟷 dargestellt. Will man jetzt 1 addieren, also 000𝟷 + 𝟷𝟷𝟷𝟷, so ergibt dies 𝟷0000. Da das System jedoch auf 4 Bits beschränkt ist, wird nur 0000 herausgegeben. Somit ist 15 + 1 = 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was ist der Typ 𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝? Welche Literale verwendet man, um Zahlen als 𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝 zu deklarieren?

A

𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝 repräsentiert die natürlichen Zahlen {0, 1, …, 2ᴮ-1}. Man verwendet ein 𝚞 hinter dem Literal, um den Typen zu deklarieren, z.B. 𝟽𝚞.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Von welchem Typ ist der Ausdruck 𝚒𝚗𝚝 𝚊 = 𝟹𝚞; ?

A

𝚒𝚗𝚝, da 𝟹𝚞 nach 𝚒𝚗𝚝 konvertiert wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly