Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions course/en/15-bcd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# BCD — Binary-Coded Decimal

BCD encodes decimal digits individually rather than representing the entire number as one binary integer.

## PREDICT

How can decimal 42 be stored when each decimal digit receives four bits?

## STEP

Packed BCD gives each digit one nibble: `42 -> 0100 0010₂ -> 0x42`. Ordinary binary 42 is instead `00101010₂ = 0x2A`.

Only nibble values 0–9 are normally valid decimal digits. Unpacked BCD commonly gives each digit a whole byte.

BCD has been useful in calculators, clocks, counters, financial systems and historical computers where decimal digits need direct preservation.

## OBSERVE

A byte `0x42` can mean ordinary integer 66 or packed-BCD decimal 42. The format supplies the meaning.

## EXPLAIN

BCD reinforces a central theme: bits need a representation rule before they become a number.

## Check yourself

Encode 1987 as packed BCD and state its storage size.
31 changes: 31 additions & 0 deletions course/en/16-fixed-point.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Fixed-point and Q formats

Fixed-point represents fractional values using an implied, fixed binary-point position.

## PREDICT

With four integer bits and four fractional bits, what does `00111000₂` represent?

## STEP

Interpreted as `0011.1000₂`, the value is 3.5. The stored integer is 56 and four fractional bits imply division by (2^4=16).

With (f) fractional bits, resolution is (2^{-f}).

Two's-complement signed integers can use the same scaling rule for signed fixed-point values.

## Tradeoffs

Fixed-point offers predictable resolution and efficient arithmetic on systems without fast floating-point hardware, but software must manage scaling, range and overflow explicitly.

## OBSERVE

No physical binary-point symbol is stored. Its location belongs to the format definition.

## EXPLAIN

Fixed-point is scaled integer arithmetic, directly connecting fractional numbers to integer width and overflow.

## Check yourself

What is the resolution with eight fractional bits? Interpret stored integer 384 using that scale.
33 changes: 33 additions & 0 deletions course/en/17-floating-point.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Floating-point and IEEE 754

Floating-point stores a significand together with an exponent so the binary point can effectively move.

## PREDICT

How can the same 32-bit format cover both very large and very small magnitudes?

## STEP

IEEE 754 binary32 contains one sign bit, eight exponent bits and 23 explicit fraction bits. Normal values conceptually follow `(-1)^sign × significand × 2^exponent`; the exponent uses a bias and the leading one of a normal binary significand is implicit.

IEEE 754 also defines signed zeros, infinities, NaNs and subnormal values.

## Why 0.1 + 0.2?

One tenth has no finite binary fractional expansion, just as one third has no finite decimal expansion. It must be rounded to a representable binary floating-point value. Arithmetic on rounded operands can therefore differ slightly from ideal decimal arithmetic.

## Precision and range

Exponent bits provide range while significand bits provide precision. Floating-point is a controlled compromise, not arbitrary-precision real arithmetic.

## OBSERVE

A floating-point bit pattern cannot be interpreted as an ordinary integer while preserving its numerical meaning; the field structure defines the representation.

## EXPLAIN

IEEE 754 standardizes behavior, but programs still need to account for rounding, special values and comparisons.

## Check yourself

Why is exact floating-point equality often more subtle than integer equality?
35 changes: 35 additions & 0 deletions course/no/15-bcd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# BCD – Binary-Coded Decimal

BCD lagrer desimalsifre som binære koder i stedet for å representere hele tallet som ett binært heltall.

## PREDICT

Hvordan kan desimaltallet 42 lagres dersom hvert desimalsiffer får fire bit?

## STEP

I packed BCD bruker hvert desimalsiffer én nibble:

`42₁₀ -> 0100 0010₂ -> 0x42`

Dette er ikke det samme som vanlig binær representasjon av 42, som er `00101010₂ = 0x2A`.

Bare nibbleverdiene 0–9 er gyldige desimalsifre; A–F brukes normalt ikke som BCD-sifre.

I unpacked BCD bruker hvert siffer typisk en hel byte, mens packed BCD legger to sifre i én byte.

## Hvorfor BCD?

BCD har vært viktig i kalkulatorer, klokker, tellere, økonomisystemer og eldre maskiner fordi desimalsifre kan bevares direkte og vises uten binær/desimal avrundingsproblematikk.

## OBSERVE

Hexdumpen `42` kan bety vanlig binær verdi 66 eller packed BCD-verdi 42. Formatkontekst avgjør.

## EXPLAIN

BCD demonstrerer igjen hovedideen i kurset: samme bitmønster kan ha forskjellige betydninger under forskjellige representasjonsregler.

## Sjekk deg selv

Skriv 1987 som packed BCD. Hvor mange byte kreves?
37 changes: 37 additions & 0 deletions course/no/16-fixed-point.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Fixed-point og Q-format

Fixed-point representerer brøktall med en implisitt fast plassering av binærpunktet.

## PREDICT

Hvis et 8-bit mønster har fire heltallsbit og fire brøkbit, hvilken verdi har `00111000₂`?

## STEP

I et unsigned Q4.4-lignende format har de fire nederste bitene vektene (2^{-1},2^{-2},2^{-3},2^{-4}).

`0011.1000₂ = 3 + 1/2 = 3.5`.

Det lagrede heltallet er 56. Skalafaktoren er (2^4=16), så den virkelige verdien er `56 / 16 = 3.5`.

Med (f) brøkbit er oppløsningen (2^{-f}).

## Signed fixed-point

Toerkomplement kan kombineres med et fast binærpunkt. Bitmønsteret tolkes først som et signed heltall og skaleres deretter med (2^{-f}).

## Fordeler og begrensninger

Fixed-point gir forutsigbar presisjon og kan være effektivt på mikrokontrollere uten rask floating-point-maskinvare. Til gjengjeld må programmereren holde kontroll på skalering, range og overflow.

## OBSERVE

Binærpunktet lagres ikke som et eget symbol. Formatdefinisjonen forteller hvor det ligger.

## EXPLAIN

Fixed-point er egentlig heltallsaritmetikk med en avtalt skala. Det gjør forbindelsen til bitbredde, toerkomplement og overflow svært tydelig.

## Sjekk deg selv

Hva er oppløsningen med åtte brøkbit? Tolk heltallsverdien 384 med åtte brøkbit.
45 changes: 45 additions & 0 deletions course/no/17-floating-point.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Floating-point og IEEE 754

Floating-point lar binærpunktet «flyte» ved å lagre en signifikand sammen med en eksponent.

## PREDICT

Hvorfor kan et svært stort og et svært lite tall begge representeres i samme 32-bit format?

## STEP

IEEE 754 binary32 bruker 32 bit fordelt på:

- 1 signbit
- 8 eksponentbit
- 23 eksplisitte fraction-bit

For normale verdier representerer feltet i prinsippet

`(-1)^sign × significand × 2^exponent`.

Eksponenten lagres med bias, og den ledende 1-biten i normale binære verdier er implisitt.

Standarden definerer også spesialverdier som +0, −0, positive/negative infinity, NaN og subnormale tall.

## Hvorfor 0.1 + 0.2?

Brøken 1/10 har ingen endelig binær brøkrepresentasjon, på samme måte som 1/3 ikke har en endelig desimalrepresentasjon. Verdien må derfor avrundes til nærmeste representerbare floating-point-verdi.

Når flere slike avrundede verdier brukes i aritmetikk, kan resultatet avvike litt fra det matematiske desimaltallet.

## Presisjon og range

Flere eksponentbit gir stor range; flere signifikandbit gir større presisjon. Floating-point gir derfor et kompromiss, ikke «vilkårlig presise reelle tall».

## OBSERVE

Et floating-point-bitmønster kan ikke tolkes som et vanlig heltall og forventes å beholde samme numeriske verdi. Feltstrukturen definerer representasjonen.

## EXPLAIN

IEEE 754 gjør floating-point portabelt og veldefinert, men programmer må fortsatt forstå avrunding, spesialverdier og sammenligning.

## Sjekk deg selv

Hvorfor er testing av floating-point-likhet ofte mer komplisert enn testing av heltallslikhet?
10 changes: 10 additions & 0 deletions exercises/no/06-numeriske-formater.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Øvelser: BCD, fixed-point og floating-point

1. Skriv 2026 som packed BCD.
2. Forklar hvorfor byte `0x99` kan bety 153 som binært heltall, men 99 som BCD.
3. Tolk `01011000₂` som unsigned fixed-point med fire brøkbit.
4. Hva er minste steg med 10 brøkbit?
5. Et Q-format lagrer heltallsverdien −320 med åtte brøkbit. Hva er den skalerte verdien?
6. Nevn de tre hovedfeltene i IEEE 754 binary32.
7. Hvorfor kan ikke 0.1 representeres eksakt med en endelig binær brøk?
8. Hva brukes NaN til?
10 changes: 10 additions & 0 deletions solutions/no/06-numeriske-formater.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Løsninger: BCD, fixed-point og floating-point

1. `20 26` i packed BCD, altså nibblene 2,0,2,6.
2. Vanlig binært `0x99 = 9×16+9 = 153`; BCD tolker nibblene separat som desimalsifrene 9 og 9.
3. `0101.1000₂ = 5.5`.
4. (2^{-10}=1/1024).
5. (-320/256=-1.25).
6. Sign, eksponent og fraction/signifikandfelt.
7. Nevneren 10 inneholder faktoren 5; en endelig base-2-brøk kan bare uttrykke brøker som etter forkorting har en nevner som er en toerpotens.
8. NaN representerer blant annet udefinerte eller ugyldige floating-point-resultater og kan propagere gjennom videre beregninger.
Loading