Kezdőoldal » Számítástechnika » Programozás » Java casting: miért ezt az...

Java casting: miért ezt az értéket adja? (kérdés kód alatt)

Figyelt kérdés

Van a következő kód:


public static void main(String[] args) {

double a = 30000000000000d;


int d = (int) a;

short e = (short) a;

char f = (char) a;

byte g = (byte) a;


System.out.println("d= " +d );

System.out.println("e= " +e );

System.out.println("f= " +f );

System.out.println("g= " +g);


}

}



___


És az eredmény:

d= 2147483647

e= -1

f= ￿ (kérdőjelet jelez itt)

g= -1



__


Kérdésem hogy ezek az eredmények hogyan jönnek ki, mert manuálisan számolva nekem más eredmények adódnak:


--> mivel a 30000000000000 érték binary-ban ( [link] 110110100100011101011010101111110000000000000,


ezért a casting után az

- integer értéke az utolsó 32 bit:

11101011010101111110000000000000

(ami decimal-lá konvertálva [link] --> 3948404736)


- short és char értéke az utolsó 16 bit:

1110000000000000

(ami decimal-lá konvertálva 57344)


- byte értéke az utolsó 8 bit:

00000000

(ami decimal-lá konvertálva 0)


Miért nem egyeznek ezek az IDE által kiadott értékkel?


Köszönöm előre is a segítséget, és elnézést ha a kérdés amatőr, de nem találtam leírást ami ennél tovább segítene.



2022. dec. 18. 22:51
 1/2 anonim ***** válasza:

Nem tudom javaban hogy vannak konverziók, de double adatot nem simán binárisan tárolunk, hanem valamilyen lebegőpontos tárolási módszerrel, pl "IEEE 64bit base2".


[link]

2022. dec. 18. 23:02
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:

A többi típusnál meg nem vetted figyelembe, hogy előjelesek.

Az f azért kérdőjel, mert ott is van egy számérték, ha továbbcast-olod, akkor látszik, de az unicode táblában azon az értéken olyan "speciális" karakter van, amit a mezei konzol nem tud megjeleníteni.

2022. dec. 18. 23:11
Hasznos számodra ez a válasz?

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!