Kezdőoldal » Tudományok » Egyéb kérdések » Honnan tudom eldönteni, hogy...

Honnan tudom eldönteni, hogy a kettes számrendszerben a számom pozitív vagy negatív?

Figyelt kérdés

A tankönyvben most tanulom a kettes komplemens kódot 8 bites tárolás esetén. A tankönyv azt írja: "a negatív szám kódjában a legnagyobb helyiértékű bit 1 értéke jelzi a negatív előjelet".

Akkor honnan döntöm el, hogy a 11111111 a 255-öt jelöli, vagy egy negatív számot?


2018. nov. 1. 20:59
1 2
 1/12 anonim ***** válasza:
0%
Ezt ennél egyszerűbben nem lehet leírni. Az első bit az előjel bit. Az mindig fixen az.
2018. nov. 1. 21:15
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
100%
Ha az ábrázolt szám természetes szám, akkor a legnagyobb helyi értékű bit nem előjel bit, ha egész számot ábrázolsz azokon a biteken, akkor meg előjel bit. Ránézésre sehogy sem tudod eldönteni, tudni kell, hogy a program mit kezd vele.
2018. nov. 1. 21:29
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
43%

Innen:

"8 bites tárolás esetén"

A legnagyobb helyiértéken álló bit az előjel.

A példa tehát negatív szám.

2018. nov. 1. 21:41
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
100%

Ahogy #2 írja, ezt ránézésre sehogy. Egy programnak, ami mondjuk kiolvassa ezt az értéket, tudnia kell, milyen számábrázolással lett oda letárolva az adott érték, vagy milyen módon akarja kiolvasni.

"A tankönyv azt írja..." Gondold a mondat elé, hogy előjeles számábrázolás esetén. (Ezen belül többféle van, általában a 2-es komplemenst használják.)

2018. nov. 1. 21:41
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:
48%

#dubitus, létezik olyan pl. C-ben, hogy signed és unsigned char.

[link]

2018. nov. 1. 21:44
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:
Nem teljesen értem még. Gimnazista vagyok és emelt szintű érettségire tanulom. Ez a számábrázolás hogyan működik? Ezt is le kell programozni akkor, hogy melyiket akarom használni vagy hogy működik a dolog?
2018. nov. 1. 21:54
 7/12 anonim ***** válasza:
100%

A számábrázolás módja azt mondja meg, hogy egy értéket milyen módon tudunk felírni mondjuk egyesekkel és nullákkal. Miután felírtuk, már nekünk kell tudni, hogy az milyen módon ábrázolja az eredeti értéket. Ha mondjuk bekerül a memóriába, akkor ott már csak bitek vannak, nincs se előjel, se speckó jelzőbit.

Pl: 1111 1111

Ezek csak egyesek, a konkrét érték attól függ, milyen módon ábrázolja azt az értéket. Ha előjel nélküli egész, akkor 255, de ha kettes komplemens, akkor -1. Azt viszont a program fogja tudni, hogy azt a nyolc bitet hogyan kell kezelnie. Sok nyelvben emiatt vannak különböző változó típusok, amik megmondják a programnak (pontosabban a fordítónak, ami a megfelelő kódot előállítja), hogy miként kezelje.

2018. nov. 1. 22:08
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
35%

Kezdjük az elején akkor!

Teljesen mindegy milyen programozási nyelvet használsz, vagy milyen processzort, nem ez a lényeg.

Mivel a memóriában csak biteket tudsz tárolni, de előjelet nem, ezért ha előjeles számot akarsz tárolni, akkor az egyik bitet arra kell használnod, hogy a szám előjelét mutassa.

Ha természetes számot (nem negatív egészt) akarsz ábrázolni (például egyesével növelsz egy értéket, mert így számlálsz meg valamit), akkor nincs szükséged az előjelre, az összes bitet használhatod a szám ábrázolására. Ha viszont két szám különbségét akarod tárolni, akkor bizony célszerű az egyik bitet az előjel jelzésére felhasználni, mert az eredmény lehet negatív is. Persze az is előfordulhat, hogy csak negatív szám lehet egy művelet eredménye, ebben az esetben szintén elhagyható az előjel ábrázolása, elég csak a szám abszolút értékét tárolni, nem fog plusz információt jelenteni az előjel, így az el is hagyható.

2018. nov. 1. 22:10
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
52%

A kettes számrendszer természetes számokat ír le. A tízesben is az előjel egy speciális jel (nem számjegy, hanem megy vízszintes vonal!).

Ehhez képest a számítógépben a számokat többféleképpen lehet lejegyezni. Mindegyik esetben egy előre eldöntött szabály van. A te esetedben ez azt jelenti, hogy az általad mondott szám valóban 255. Azonban, ha negatív számokat is kívánunk ábrázolni, kikötjük, hogy a legnagyobb helyiértékű bit előjelbit. Ebben az esetben viszont egy byte (bájt) nyolc bitjéből, ha az első 1, akkor egy negatív számról van szó, ha 0, akkor pozitívról. Értelemszerűen ekkor egy bájtban csak 127-ig tudsz számot ábrázolni, tehát ekkor ott nem 255, hanem -127 áll. De erről előre megállapodunk, és akkor mindig így van.

2018. nov. 1. 22:36
Hasznos számodra ez a válasz?
 10/12 A kérdező kommentje:

Köszönöm a válaszokat, sokat segített! 🙂

Zöld kéz is ment.

2018. nov. 1. 23:07
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!