Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Da int a byte, solo bit significativi

    Come da oggetto, ho una variabile
    codice:
    int primo=79;
    che equivale, in binario, a 01001111.

    Quello che vorrei fare è trasformare quel numero da int a byte e prendere solo i 4 bit più significativi, ossia 0100.

    Devo usare le stringhe o ci sono altri metodi?
    Grazie
    Andrea Gianfreda
    Designer on Makezone
    Milano, Como, Lugano, Lecce

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Esistono gli operatori bit a bit:
    codice:
    int a = <valore>;
    b = ((a & 4026531840) >> 28);
    In teoria dovresti avere in b il valore dei primi 4 bit. Ricorda che gli int in Java sono di 4 byte.

    (a & 4026531840) restituisce (se ho fatto bene i conti) i primi 4 bit seguiti da tutti zeri.

    L'operazione successiva ( >> ) shifra tutti i bit di 28 posizioni: 32 - 4 = 28.

    Non ho fatto delle prove, potrei aver sbagliato i conti


    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

  3. #3
    Secondo me la soluzione corretta è:

    codice:
    int a = <valore>;
    b = ((a & 240) >> 4);
    Con il codice di LeleFt si prendono i primi 4 bit dei 32, con il codice che ho postato io si prendono i primi 4 bit del primo byte a dx, cioè quello meno significativo.

    Il valore 240 è il valore della maschera 11110000 con tanti zeri a sx degli uni.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sì... effetivamente non avevo notato che a lui servivano i primi 4 bit del byte meno significativo e non del byte più significativo.


    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

  5. #5
    grazie a tutti e due
    Andrea Gianfreda
    Designer on Makezone
    Milano, Como, Lugano, Lecce

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 © 2025 vBulletin Solutions, Inc. All rights reserved.