|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Sep 2005
Messaggi: 3
|
[Java] Definizione tipi dati
Salve,
sono nuovo dell'ambiente di programmazione Java e avrei già un grosso problema al quale non riesco a trovar soluzione. In pratica avrei necessità di definire un tipo di dato numerico che utilizzi assolutamente 3 Byte per la rappresentazione, così da poter permettere l'inserimento di numeri che vanno da 0 a 16.777.215. Non posso utilizzare un tipo di dato quale l' INT perchè, si risolverebbe il mio problema di range numerico, ma comporterebbe l'uso di 4 Byte. Correggetemi se erro. Ora ricordo bene che in altri linguaggi tale definizione era possibile. Credo sia fattibile anche in java dunque ma non ho la minima idea del come. Attendendo risposta, ringrazio |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Potresti definire una classe apposita che in realtà "maschera" un array di byte di dimensione, appunto, tre, e poi ridefinirti le operazioni che ti occorrono su quel tipo speciale di dati. Oppure rifarlo proprio a partire dal tipo int, avendo cura di verificare i limiti del tuo nuovo "sottotipo" quando fai operazioni su int.
So che è un'idea banale, ma è la prima che mi è venuta in mente... forse qualcun altro ti saprà consigliare soluzioni più rapide.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Sep 2005
Messaggi: 3
|
Quote:
Ma basandomi sul tipo int per definire una nuova classe, pur specificando i limiti, non andrei comunque ad utilizzare 4 byte una volta chiamata la nuova classe? |
|
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Sep 2005
Messaggi: 3
|
Aiuto
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
credo che l'unica soluzione al tu problema sia creare una classe che abbia un vettore di 24 boolean all'interno, e ogni volta che construisci un numero di questa classe, lo converti in binario. In quanto a dimensione, se non ricordo male il boolean è un dit (true or false), quindi utilizzi 24 bit, ovvero tre byte. Di meglio non sò se si può fare, se ci riesci facci sapere.
__________________
My gaming placement |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Non sarei così sicuro che un booleano sia implementato usando un bit, piuttosto un int...
La cosa migliore sarebbe usare un int e "limitarlo", se il requisito dei 3 byte non e' irrinunciabile. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
guarda che mi sembra che il boolean sia solo un bit, infatti è true or false, ovvero 1 o 0, quindi, ripeto, credo che sia un solo bit, a meno di smentite.
__________________
My gaming placement |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Se devi usare soltanto 3 byte, creati un vettore di 3 byte o una struttura di soli 3 byte e scrivi delle procedure e funzioni per manipolarli.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
|
Quote:
|
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
__________________
My gaming placement |
|
|
|
|
|
|
#11 | ||
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Dalle specifiche della jvm:
Quote:
Quindi usando un array di 24 boolean l'occupazione nella jvm di Sun è (a meno di cambiamenti) di 24 byte. Se il requisito dei 3 byte è irrinunciabile si potrebbero usare 3 int (12 byte=mcm(3,4)) per contenere 4 numeri, mascherare i bit, ecc... con il conseguente lavoraccio per implementare il tutto e il decadimento di prestazioni. Oppure dai un occhio a BitSet, la cui documentazione però dice: Quote:
Ultima modifica di lovaz : 05-09-2005 alle 12:41. |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:38.



















