Kezdőoldal » Számítástechnika » Programozás » C/C++ Biteltolás jobbra:...

C/C++ Biteltolás jobbra: téves az a megfogalmazás hogy ekkor mindig előjelbit lép be az értékbe?

Figyelt kérdés

A könyv amiből tanulok szépen leírja hogy hogy van balra meg jobbra aztán meg eléggé bezavar hogy a "jobboldalra történő biteltolás előjeltartó, a legmagasabb helyiértékű előjelbit visszaíródik"


Csináltam egy csomó próbát, és tapasztalataim alapján elmondható mind negatív mind nemnegatív esetekben:


- az értékbe bal oldalról mindig előjelbit lép be

- az értékbe jobb oldalról mindig 0 lép be


Ez elfogadható definíciónak?


2013. jún. 27. 22:56
 1/9 anonim ***** válasza:

Amit a könyvben írnak nem zárja ki ezt.

Ott csak az a lényeg, hogy az előjele változatlan maradjon az értéknek.

(Mert hát ugye nem lenne túl jó, ha hirtelen átugrana mondjuk a pozitív szám negatívba nemde?)

2013. jún. 27. 23:17
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:

Okéoké énse arra gondoltam hogy a kettő kizárja egymást, a kérdésem az h amit írtam elfogadható? Mert az tömörebb és egyszerűbb.


"- az értékbe bal oldalról mindig előjelbit lép be

- az értékbe jobb oldalról mindig 0 lép be


Ez elfogadható definíciónak?"

2013. jún. 27. 23:25
 3/9 anonim ***** válasza:

Jónak tűnik.


[link]


"Compilers may also shift in the sign bit. Thus, if x is negative, the sign bit is 1, so 1's are shifted from the most significant end. If x is non-negative, 0's are shifted from the most significant end. This is called an arithmetic right shift since the sign bit is shifted in."

2013. jún. 27. 23:33
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:
Köszönöm a segítséged.
2013. jún. 27. 23:37
 5/9 iostream ***** válasza:
100%

Csakhogy ez nem általános érvényű: oda is van írva, hogy a compiler MEGTEHETI. Az előjeles értékek jobbra shiftelése implementációfüggő működés.

[link]

2013. jún. 28. 12:19
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

"- az értékbe bal oldalról mindig előjelbit lép be

- az értékbe jobb oldalról mindig 0 lép be


Ez elfogadható definíciónak?"


nem, mert a negatív számok jobbra tolásánál nem tudhatod (undefined)

2013. jún. 28. 14:15
Hasznos számodra ez a válasz?
 7/9 iostream ***** válasza:
Nem undefined hanem implementation defined. Nem ugyanaz :)
2013. jún. 28. 15:26
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:
100%

igaz:D, szóval a lényeg, kedves kérdező, erre ne alapozz, inkább

(0xF123 >> 4) & 0x0FFF

2013. jún. 28. 15:30
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Köszönöm a válaszokat, üdv
2013. jún. 28. 20:52

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!