Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    byte da 0 a 255 si puo?

    ciao a tutti, vi riporto il codice qua sotto, che fa vedere che in un byte posso mettere un valore fino a 127 positivo. Mi interesserebbe pero utilizzare un byte per un valore senza segno che vada da 0 a 255, si puo fare?

    codice:
    class numeri{
    public static void main(String [] args){
      byte x = (byte) 128;
      short y = x;
      System.out.println("valore di y: " + y);
    }
    }

  2. #2
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    In Java non esiste l'unsigned... e, sinceramente, non ne vedo l'utilità.
    Spiega meglio ciò che intendi fare perchè un byte signed -1 è perfettamente equivalente ad un byte unsigned 255...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    bisogna fare attenzione a queste cose, che non dà neanche segni di errore il compilatore, e intanto tu scrivi che gli attribuisce 200 a una variabile byte e non sai che è impossibile...
    l'utiltà nel non avere il segno è appunto che se non ti interessano i negativi ci sta un numero piu grande : )

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Lucked
    bisogna fare attenzione a queste cose, che non dà neanche segni di errore il compilatore, e intanto tu scrivi che gli attribuisce 200 a una variabile byte e non sai che è impossibile...
    l'utiltà nel non avere il segno è appunto che se non ti interessano i negativi ci sta un numero piu grande : )
    Stiamo parlando di un codice tipo questo?

    codice:
    byte a = 200;
    Questo codice non è compilabile e dà un messaggio d'errore ben preciso.
    Se si effettua un cast forzato allora non dà alcun messaggio d'errore ed è corretto che non lo faccia: se si effettua un cast allora si sta cercando di "trasformare" il valore originario (ovvero una costante INT che può assumere valori da -2.147.483.648 a 2.147.483.647 in uno che possa essere contenuto nella variabile di destinazione.

    Sul fatto che sia impossibile è solo una questione di concetto: 200 è un valore perfettamente valido per un byte, basta considerarlo senza il segno:

    codice:
    byte b = (byte) 200;
    System.out.println("Con segno: " + b);
    System.out.println("Senza segno: " + (b & 0xff) );
    La rappresentazione binaria del numero 200 su 8 bit (senza segno) è la seguente:
    codice:
    11001000
    che è la stessa identica rappresentazione del valore -56 (8 bit con segno).

    Ripeto: dipende tutto da quello che intendi fare.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    allora....1. mi son sbagliato dà l'errore se non faccio il cast, me ne sono accorto.
    2. volevo riottenere proprio 200....e tu ci sei riuscito, ma non ho capito cosa fa l'operazione: b & 0xff, se metto b in and con tutti uno, non è sempre b?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Lucked
    2. volevo riottenere proprio 200....e tu ci sei riuscito, ma non ho capito cosa fa l'operazione: b & 0xff, se metto b in and con tutti uno, non è sempre b?
    Sì, ma il risultato di quell'espressione non è più un valore byte, ma int, limitato ai valori da 0 a 255


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    quello che serviva insomma...ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.