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
41 changes: 41 additions & 0 deletions course/en/18-other-representations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Other representations

Bit patterns represent much more than ordinary integers. This chapter introduces Gray code, biased/excess notation, character codes and packed data.

## PREDICT

Must the bit pattern `01000001` always mean the number 65?

## STEP — Gray code

In binary-reflected Gray code, neighboring values differ in exactly one bit. This is useful when multiple bits should not transition simultaneously, such as in some position encoders.

A binary value `b` can be converted with `g = b XOR (b >> 1)`.

## STEP — biased/excess notation

An exponent can be stored as an unsigned field plus an agreed bias. With bias 127, stored value 130 represents exponent (130-127=3).

IEEE 754 binary32 uses this principle for its exponent field, with reserved field values receiving special meanings.

## STEP — characters as numbers

ASCII assigns `A` the code value 65, or `0x41`. Unicode defines **code points**, such as U+0041 for A. An encoding such as UTF-8 then determines the actual stored bytes.

A code point and its byte encoding are not the same concept.

## STEP — packed data

One byte can contain several bit fields. A hypothetical status register might use bit 7 for ready, bit 6 for error, bits 5–4 for a mode and bits 3–0 for a counter.

## OBSERVE

`0x41` may be unsigned 65, signed 65, ASCII A, part of an instruction or a field inside a larger structure. Context supplies meaning.

## EXPLAIN

Computers store bits. Types, protocols, instruction sets and file formats supply their semantics.

## Check yourself

Compute the Gray code for binary `1010`. What exponent does stored value 124 represent with excess-127?
58 changes: 58 additions & 0 deletions course/no/18-andre-representasjoner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Andre representasjoner

Bitmønstre brukes til langt mer enn vanlige heltall. Dette kapitlet viser fire viktige eksempler: Gray-kode, biased/excess-notasjon, tegnkoder og packed data.

## PREDICT

Må bitmønsteret `01000001` alltid bety tallet 65?

## STEP — Gray-kode

I binær-reflektert Gray-kode skiller naboverdier seg med nøyaktig én bit. Dette er nyttig når flere bit ikke bør endre seg samtidig, for eksempel i enkelte posisjonssensorer og enkodere.

De første 3-bit Gray-kodene er:

| Desimal | Binær | Gray |
|---:|---:|---:|
| 0 | 000 | 000 |
| 1 | 001 | 001 |
| 2 | 010 | 011 |
| 3 | 011 | 010 |
| 4 | 100 | 110 |

Fra binær verdi `b` kan Gray-koden beregnes som `g = b XOR (b >> 1)`.

## STEP — biased/excess

En eksponent kan lagres som et unsigned felt med en fast bias. Hvis bias er 127, representerer lagret felt 130 eksponenten (130-127=3).

Dette er prinsippet som brukes for eksponentfeltet i IEEE 754 binary32, selv om spesielle feltverdier har egne betydninger.

## STEP — tegn som tall

ASCII gir bokstaven `A` kodeverdien 65, altså `0x41`. Unicode definerer **code points**, for eksempel U+0041 for A. En encoding som UTF-8 bestemmer deretter hvilke byte som faktisk lagres.

Code point og byteencoding er derfor ikke det samme.

## STEP — packed data

En byte kan deles i bitfelt. Et tenkt statusregister kan bruke:

- bit 7: ready
- bit 6: error
- bit 5–4: mode
- bit 3–0: counter

Da er byten ikke «ett tall» i vanlig forstand, men flere felt pakket sammen.

## OBSERVE

`0x41` kan tolkes som unsigned 65, signed 65, ASCII-tegnet A, deler av en instruksjon eller et felt i en struktur. Konteksten bestemmer betydningen.

## EXPLAIN

Datamaskinen lagrer bit. Typer, protokoller, instruksjonssett og filformater gir bitene semantikk.

## Sjekk deg selv

Beregn Gray-koden for binær `1010`. Hva er den virkelige eksponenten når et excess-127-felt inneholder 124?
10 changes: 10 additions & 0 deletions exercises/no/07-representasjoner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Øvelser: andre representasjoner

1. Bruk `g = b XOR (b >> 1)` på binærverdien `0110`.
2. Hvorfor kan én-bit-overganger være nyttige i en mekanisk posisjonsenkoder?
3. Med excess-127: hvilken virkelig eksponent representerer feltverdien 140?
4. Med excess-15: hvilken feltverdi lagrer eksponenten −4?
5. Hva er ASCII-kodeverdien til `A` i desimal og hex?
6. Forklar forskjellen mellom et Unicode code point og UTF-8-byte.
7. Et register bruker bit 7 som READY og bit 0 som ENABLE. Hvilken maske tester begge bitene samtidig?
8. Gi tre forskjellige plausible tolkninger av byte `0x41`.
10 changes: 10 additions & 0 deletions solutions/no/07-representasjoner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Løsninger: andre representasjoner

1. `0110 XOR 0011 = 0101`.
2. Når bare én bit endres mellom naboposisjoner reduseres risikoen for tvetydige mellomtilstander dersom bitene ikke skifter helt samtidig.
3. (140-127=13).
4. (-4+15=11), altså feltverdien 11.
5. 65 desimalt, `0x41`.
6. Code point er Unicode-identiteten til tegnet; UTF-8 er en konkret variabel-lengde byteencoding av code pointet.
7. `10000001₂ = 0x81`.
8. For eksempel unsigned heltall 65, ASCII-tegnet A eller et rått bytefelt i en instruksjon/protokoll/filstruktur.
Loading