Typy proste i znak "-"?

Oglądasz archiwalną wersję wątku "Typy proste i znak "-"?" z forum pl.comp.lang.java



Bartek Zyntek - 22 Kwi 2002, 09:52
Dlaczego w Javie nie ma typow podstawowych numerycznych bez znaku.
Czy jesli mam interpetowac liczbe ze znakiem jaka dodatnia (np. typu byte)
to musze dodac wartosc 256 i wtedy dopiero rzutowac na typ np. int. Czy to
nie jest na okolo.

Pozdrawiam
    Bartek




mm - 22 Kwi 2002, 10:25




Dlaczego w Javie nie ma typow podstawowych numerycznych bez znaku.



Josh Bloch autor ksiazki Effective Java Programming
(http://java.sun.com/docs/books/effective/) mowi o typie unsigned int:

"I wish we had had 'em from the beginning. A relatively small fraction of
programmers need them, but they REALLY need them, for instance, for doing
marshaling/unmarshaling of net packets, and for doing multiprecision
arithmetic. Unfortunately, the conversions/promotions among primitive types
are already complex, and would get worse if we provided unsigned types. At
the very least I hope to add library support"

to samo tyczy sie unsigned byte.
Po prostu to uprosilo jezyk ale trezba bylo za to zaplacic jakas cenne.
Ja bym od siebie dodal, ze w Javie artmetyka nie jest  tak bardzo
"przywiazna" do architektury systemu operacyjnego
 i np Java dostarcza 64 bitowych operacji na danych.

Czy jesli mam interpetowac liczbe ze znakiem jaka dodatnia (np. typu byte)
to musze dodac wartosc 256 i wtedy dopiero rzutowac na typ np. int. Czy to
nie jest na okolo.



Nie musisz. Konwersje miedzy typami prostym dzialaja bezposrednio.
Tylko tu sie troche waham czy dobrze ci odpowiedzialem.. no bo nie dokonca
rozumiem pytanie.

Jesli w Javie masz byte to jest to byte (-128  do 127) i nie mozesz go
zinterpretowac inaczej dokonujac konwersji
(tak jak no w C++ mozesz konwertowac z byte na char).

mm



Marcin Cenkier - 22 Kwi 2002, 13:02

Jesli w Javie masz byte to jest to byte (-128  do 127) i nie mozesz go
zinterpretowac inaczej dokonujac konwersji



int i;
byte b = -17;

i = b;         // i==-17
i = b & 0xff;  // i==239



mm - 22 Kwi 2002, 18:02





| Jesli w Javie masz byte to jest to byte (-128  do 127) i nie mozesz go
| zinterpretowac inaczej dokonujac konwersji

int i;
byte b = -17;

i = b;         // i==-17
i = b & 0xff;  // i==239

--
Greetings,                           -- mailto:mcenkier@poczta.fm --
Marcin Cenkier           "Let's assume that there's only one truth."



Jesli o to chodzilo, to chyba rzeczywiscie nie zrozumialem pytania.

Wydawalo mi sie,  ze pytanie dotyczylo tego czy mozna za  pomoca samego
rzutownia inaczej zinterpretowac liczbe,
unikajac dodatkowych operacji arytmetycznych. (w tym watku nie bede sie
czepial sformulowan ;-) )

A tak swoja droga przy okazji tego tematu mozna by podyskutowac troche na
temat roznych trickow
i rad zwiazanych z typami prostymi.

Np. radzy typu nie uzywac typu short
bo zamiast kosztem dokladosci zyskiwac 2 bajty pamieci w stosunku do typu
int, to sie traci 2 bajty nie zyskujac nic.

Czy ktos ma inne tego typu uwagi?

pzdr

mm




Jezuch - 23 Kwi 2002, 16:01

Np. radzy typu nie uzywac typu short
bo zamiast kosztem dokladosci zyskiwac 2 bajty pamieci w stosunku do typu
int, to sie traci 2 bajty nie zyskujac nic.

Czy ktos ma inne tego typu uwagi?



short i byte może i nic nie dają, ale short[] i byte[] już są OK :)


Czy oplaca sie robic proste pliki konfiguracyjne w XML'u?
Błagam o pomoc w prostej aplikacji JAVY! PILNE!
Poczatkujacy, proste pytanie dot. jTree
proste pytanie na temat Servletów
  • pielegniarki opieka kielce
  • czemu po moim routerze jest getaway a potem
  • kretynskie smsy od roznych reklamodawcow
  • smieszne teksty historie
  • drzewka do kupienia
  • katowice awf fizjoterapia egzaminy
  • java;warcaby
  • tunezyjski aar 1066 1820
  • o symbianie na powaC2 nie czyli
  • Zbieranina wiadomości z for dyskusyjnych || Indeks