Kezdőoldal » Számítástechnika » Programozás » C (C++) egész konverzió. Ez...

C (C++) egész konverzió. Ez mit jelent?

Figyelt kérdés

Kerninghtan: A C programozási nyelv c. könyv:


"Egészek konverziója



Bármely egész úgy konvertálódik egy adott előjel nélküli típussá, hogy megkeressük azt a legkisebb nem negatív értéket, amely az előjel nélküli típussal ábrázolható legnagyobb értéknél eggyel nagyobb modulussal kongruens az egész számmal."


Már az nagy segítség lenne ha elmondanátok ebben a mondatban mit jelent az hogy "modulus" és hogy "kongruens".


A kongruensre azt találtam hogy azonos, megegyezik, ez oké. De a modulusra csak a matematikai értelemben vett kongruenciát találom. Ez a idézett definíció beleillik ebbe:


[link]


?

Köszönöm, üdv


2013. dec. 28. 20:03
1 2
 1/17 iostream ***** válasza:

Márpedig neked a matematikai értelemben vett kongruencia kell, hiszen ez matek. Tehát ha az előjel nélküli egészed által ábrázolható legnagyobb érték 255, akkor 256 lesz a modulus. Olyan számot keresünk, ahol a kongruencia azonos erre a modulusra. Definíciót te idézted be. Ez pozitív számoknál praktikusan az osztási maradék.

Ha a 75-t akarjuk konvertálni előjel nélkülivé akkor a 75 lesz a legkisebb nemnegatív szám, aminek 75 % 256 == 75.

Ha a -100-t, akkor pedig a 156.

Ha a 257-t akkor az 1.

2013. dec. 28. 20:22
Hasznos számodra ez a válasz?
 2/17 anonim válasza:

Szia!

1) modulus - mod (maradékos osztás)

2) kongruens - itt lineáris kongruencia, ld. [link] az első kifejezés szavakban: ax kongruens b-vel, modulo m


Szerintem ez a részlet, amit írtál, arra vonatkozik, hogy a compiler hogyan konvertál egy típust unsinged típussá. Ezt a fordító megoldja helyetted. Inkább a speciális esetek érdekesek, pl. ha két operandus típusa különbözik, akkor mi változik.

2013. dec. 28. 20:35
Hasznos számodra ez a válasz?
 3/17 A kérdező kommentje:

#@: Köszönöm a segítséged, de én ezt érteni akarom, nem mechanikusan átlépni rajta hogy "majd a fordító megcsinálja".


iostream: Én még nem tanultam sehol kongruenciarelációt, így előbb ezt tisztáznám le hogy jól értem-e.


[link]


Legyen a és b egész számok, továbbá m egész szám és m > 0, ahol m -et nevezzük a kongruencia modulusának.


A kongruenciareláció feltétele hogy m osztható (a-b) -vel (az "a" és a "b" szám KÜLÖNBSÉGÉVEL). A feltétel teljesülésekor az "a" m-el vett osztályi maradéka egyenlő a "b" m-el vett osztályi maradékával. Ekkor mondjuk hogy "a kongruens b-vel", és a kongruencia modulusa m.


A kérdés hogy ez az osztályi maradék mennyi lesz, wikipédia definíciójában ezt "k"-val jelöljük. Tehát létezik olyan k egész szám, hogy a feltételek teljesülése esetén


a = k * m + b


Tehát ha jól értelmezem, ennek az egésznek annyi a lényege hogy a é b számok között azt a "logikai kapcsolatot" vizsgáljuk, hogy egy m számmal osztva ugyanazt a maradékot adják.


Például.


(= jelenti a tripe bar-t, azaz a három vízszintes vonalat)


a = b (mod m)


5 = 2 (mod 3)


itt k=2 a közös maradék, de ellentmondás jön ki ha a k létezése képletbe helyettesítem:


5 = 2 * 3 + 2


Mielőtt folytatnám a típuskonverziót, mit nézek el?


Nagyon köszönöm mindkettőtök segítségét, üdv

2013. dec. 28. 21:12
 4/17 A kérdező kommentje:

az elejét elírtam


@2: köszönöm a ...

2013. dec. 28. 21:13
 5/17 anonim ***** válasza:

inkább fogd fel az egészet úgy, mintha folyamat in(/de)krementálnád a változódat, és a típus alsó/felső határánál "körbeér" (overflow/underflow), ezért egy 8bites egésznél 255+1=0, 255+5=4 (255,0,1,2,3,4), 4-6=-2=254 (4,3,2,1,0,255,254)


persze így sem sokkal érthetőbb, de legalább nyoma sincs a kongruenciának (illetve tök ugyanaz, csak intuitívan közelíted meg)

2013. dec. 28. 21:24
Hasznos számodra ez a válasz?
 6/17 A kérdező kommentje:
Erről nekem számrendszerek jutnak eszembe, amit meg te mondasz olyan mint egy túlcsordulás. Azért meg szeretném érteni a kongruenciarelációt.
2013. dec. 28. 21:45
 7/17 anonim válasza:

Szia, #2 vagyok.


a = k*m + b


pl.

5 = 2 (mod 3)

5 = k*3 + 2

k = 1 //azaz 5-ben 1-szer van meg a 3, maradék: 2


pl.

17 = 2 (mod 3)

17 = k*3 + 2

k = 5 //azaz 17-ben 5-ször van meg a 3, maradék: 2

2013. dec. 28. 21:59
Hasznos számodra ez a válasz?
 8/17 A kérdező kommentje:

Köszönöm #2, még erre visszatérek, csak 2 korrektálás a hozzászólásomba:


m osztóJA (nem osztható)


és osztáS* nem osztály

2013. dec. 28. 22:12
 9/17 iostream ***** válasza:
Pontosan olyan, mint a számrendszerek. Ha 256 az említett modulus, akkor olyan, mintha 256-os számrendszerben ábrázolnád a számot és csak az utolsó számjegyet vennéd (maradékos osztás). Ez persze csak akkor, ha nemnegatív számokról beszélünk.
2013. dec. 28. 23:15
Hasznos számodra ez a válasz?
 10/17 anonim ***** válasza:

Ez pont csak egy túlcsordulás, semmi több, csak nagyon szabatosan meg van fogalmazva.

Egyébként a válaszomban szerepelt is ez a szó "(overflow/underflow)".

2013. dec. 28. 23:46
Hasznos számodra ez a válasz?
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!