A bináris valami, amit nem kell tudni a modern, magas szintű programozás során. A 6502 számos műveletet képes elvégezni (összeadni, kivonni, mozgatni a dolgokat a memóriában), amelyekhez nem kell megértenie, hogyan működik a bináris. Vannak azonban olyan műveletek, amelyeket szeretnénk elvégezni, mint például a szorzás és a megosztottság, amelyek nem olyan dolgok, amelyeket a 6502 natívan képes megtenni. Ezeket a funkciókat magunknak kell létrehoznunk. Ez megköveteli a bináris számítás bonyolultságának megértését., Nem utolsósorban azért, mert belsőleg a 6502 mindent bináris formában fog képviselni. Ezt láttuk, amikor megvitattuk, hogy a processzor hogyan próbálja “lefordítani” mindent bináris mintákra. Nagyon minimális, hogy ismeri az olvasás bináris számok, valamint a kifejezések, mint a bit, byte, nibble hasznos lesz megérteni, hogy általában hogyan működik a 6502. Szerencsére, bár számunkra, bináris intuitív, szórakoztató.
jelenleg az adatok elektronikában történő tárolásának egyetlen gyakorlati módja a két állapot logikája. Valami lehet “be” vagy “ki”, “igaz”vagy ” hamis”., Egy számítógépen egy egyedi bináris számjegy, az információ tárolásának legalapvetőbb módját egy kicsit nevezik. Egy bit lehet egy 1
vagy egy 0
. A számítógépen lévő adatokat bitcsoportok tárolják. Sok esetben, mint például a 6502, az előnyben részesített módszer a nyolc csoport (valami hasonló 0001 0101
). Ezt bájtnak hívják. Mi is van egy kisebb csoportosítása négy bit úgynevezett nibble (lol).
a numerikus adatok megfelelő ábrázolásához néhány esetet meg kell vizsgálni. Először is, kezdjük aláíratlan bináris., Az egy byte nyolc bitje ( B ) a következőképpen jelenik meg:
b₇b₆b₅b₄b₃b₂b₁b₀
a biteket jobbról balra számoljuk, 0-tól indexelve. Minden bit látható, hogy kapcsolatban áll egy bináris szám. A jobb szélső bit 2⁰, a következő balra 21, majd 22 stb. Ezért hasznos lesz emlékezni a 2. hatványra, amelyek a következők:
2⁷ = 128
2⁶ = 64
2⁵ = 32
2⁴ = 16
2³ = 8
2² = 4
2¹ = 2
2⁰ = 1
lefordítani a binárisról valamire, amit felismerünk, össze kell foglalnunk a 2 megfelelő erejét., Ha egy bit 1
mi fog tartalmazni a megfelelő erő az összeget, ha nem fogjuk eldobni. Ez már bonyolultnak tűnhet,de egy példa megnézése remélhetőleg segít tisztázni. Ha a 0010 0011
bináris számot vesszük, láthatjuk, hogy az egyetlen bitkészlet 0, 1 és 5. Ezután “összegezhetjük” őket:
b₅ + b₁ + b₀
= 2⁵ + 2¹ + 2⁰
= 32 + 2 + 1
= 35
megpróbálhatja a másik utat is, decimálisról binárisra. Ezt úgy végezzük, hogy a számot kétszer többször elosztjuk, majd követjük a maradékot., A fennmaradó bit (amely mindig 1 vagy 0 lesz)egy bájt bitjeire térképez. Például, ha osztja 35 által 2 kapsz 17 maradék 1. Ezért a 0 bit 1 lesz. Ismét ez a számítás kevésbé furcsa,mint amilyennek hangzik, amikor látja. Próbáljuk újra 35 (vagy 0010 0011
):
35 ÷ 2 = 17r1→ 1
17 ÷ 2 = 8r1 → 1
8 ÷ 2 = 4r0 → 0
4 ÷ 2 = 2r0 → 0
2 ÷ 2 = 1r0 → 0
1 ÷ 2 = 0r1 → 1
0 ÷ 2 = 0r0 → 0
0 ÷ 2 = 0r0 → 0
Ez a módszer megadja nekünk az eredményt0010 0011
, ami pontosan az, amit elkezdtünk!
kiegészítés
most, hogy kényelmesen olvasunk és bináris számokat írunk, megpróbálunk velük matematikát csinálni., A kiegészítés “normálisan”működik. Ha két normál számot ad hozzá (próbáljuk meg a 9-et és a 2-et), akkor mindent” hordoz”, ami tíz fölé megy a következő számjegyig. Tehát a 9 + 2 11-et ad. Binárisan hasonló folyamatot hajt végre. Az egyes bitek a következő szabályokat követik:
0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 =(1)0
az (1) hordozót jelent. Ez ugyanaz, mint mi, mondván 9 + 2 = (1)1. Amit megtanultunk, mielőtt láthatjuk, hogy 10 bináris egyenértékű 2 decimális, pontosan mit várnánk 1 + 1!,
ha megpróbálunk csinálni 3 (0011
) + 1 (0001
) láthatjuk egy másik példát arra, hogy a bináris művek hordozása:
0011
+ 0̲0̲0̲1̲
0100
itt láthatjuk, hogy valami az 1.bitről a 2. Mi van, ha nagyobb számot adunk hozzá? Próbáljuk ki a 128-at és a 129-et:
10000001
+̲1̲0̲0̲0̲0̲0̲0̲0̲
(1)00000001
már találkoztunk az első problémánkkal. Tudjuk, hogy a válasznak 257-nek kell lennie, azonban, ha megnézzük, mi van az első 8 bitben, úgy tűnik, hogy a válasz 1. Csak az extra carry bit segítségével válik nyilvánvalóvá az igazi válasz., Ha a bináris számainkat 8 bitben akarjuk menteni, szükségünk lesz egy módra az ilyen típusú hordozók tárolására és nyomon követésére. A 6502 pontosan meg tudja csinálni, phew! A 6502-ben egy zászlókészlet épült benne, amelyek közül az egyik a Carry Flag. Ez lehet állítani, mint 1 vagy 0. Amikor egy kiegészítés történik bináris számok, amelyek eredményeként a válasz nagyobb, mint 256 A Carry zászló van beállítva, hogy 1. Ez lehetővé teszi számunkra, hogy nyomon kövessük a matematika, és ad nekünk egy módja annak, hogy meghosszabbítja a számtani múlt 8 bites számok.,
Vegyünk egy percet, hogy gondolkodjunk azon, amit az imént mondtunk, mert azt hiszem, hogy mély hatással van rá. Ez nem szoftver, amely nyomon követi a carry a mi matematika, ez a hardver. A carry flag egy regiszter belsejében 6502, egy “tényleges hely”. Ha lenne egy nagy mikroszkópom, ráközelíthetnék, és azt mondhatnám: “hé, ez az a hely, ahol a hordozható bit tárolódik!”. Ez az, amit igazán izgalmasnak tartok a 6502 assembly tanulásában — olyan térben vagy, ahol hatalmas átfedés van a meglévő hardver és az írható kód között., Ez valóban alakíthatja a kódolás gondolkodásmódját ebben a rendszerben. Amikor Python-t írok a Mac-en, nagyon kevés értelme van annak, hogy hogyan kapcsolódik hozzá — írom a szkriptemet, valami varázslat történik, majd kapok néhány számot. Amikor megvitatja az összeszerelést, nem kerülheti el azt az elképzelést, hogy amit csinálsz, erős kapcsolatban áll a gépével, sokkal kevésbé absztraktnak találom.
tehát a pozitív egész számainkat is helyesen reprezentálhatjuk, ha tartalmazunk egy carry bitet, akkor a bináris számok helyesen adhatók hozzá. Két probléma van azonban:
- csak 255-ig számolhatunk (ha csak 8 bitet használunk).,
- csak pozitív számokat tudunk képviselni.
meg kell tudnunk oldani az utóbbi problémát. Ehhez bemutatjuk aláírt bináris.