Visualizzazione dei risultati da 1 a 4 su 4

Discussione: operatori bitwise

  1. #1

    operatori bitwise

    ragazzi mi serve il vostro aiuto... di nuovo.. !!
    mi servirebbero delucidazioni sul funzionamento dell'operatore ">>".

    int a=-1; --> rappresentazione binaria: 10000000000000000000000000000001

    faccio l'operazione di shift:

    int b=a>>16 --> ottengo (in rappr. binaria): 10000000000000010000000000000000 ???

    se poi "Casto" a short l'intero b che cosa ottengo

    short c = (short) b --> c in binario è: 1000000000000000 ????

    questa era l'idea che mi ero fatto sul funzionamento di questo operatore.. poi cercando su internet mi sono venuti dei dubbi..cosa c'è di sbagliato??Help!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Mi sa che

    1) Hai le idee un po' confuse sulle rappresentazioni binarie dei numeri
    2) Hai qualche magagna nel programma che ti stampa le rappresentazioni.

    Infatti

    codice:
    -1          --> 11111111111111111111111111111111
    (-1 >> 16)  --> 11111111111111111111111111111111
    Basta fare una semplice prova:

    codice:
    public class Binario {
       public static void main(String[] args) {
          int a = -1;
          System.out.println( Integer.toBinaryString(a) );
          System.out.println( Integer.toBinaryString(a >> 16) );
       }
    }

    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
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: operatori bitwise

    Originariamente inviato da Leon@@rdo
    mi servirebbero delucidazioni sul funzionamento dell'operatore ">>".
    >> è un "signed" shift a destra (mantiene il segno).
    >>> è un "unsigned" shift a destra (non mantiene il segno ed inserisce degli 0).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    grazie per la risp.. mi sa che le idee ce l'ho un bel pò confuse..
    Avevo bisogno di dividere un int in due short, parte alta High e parte bassa Low senza perdere informazione.. ho fatto questo codice,con l'aiuto di qualche utente del forum, che funziona.. mi spieghi in binario che cosa fa il controllo sulla parte bassa (low),; perchè senza quel controllo i valori che ottengo quando ricostruisco l'int di partenza sono sbagliati?? grazie in anticipo

    ---------------------------------------------------------
    int a= -1;
    int b= 999;
    short high = (short) (a >> 16);
    short low = (short) a;

    if(low<0)

    high=(short) (high+1);
    ----------------------------------------------------------

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.