Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598

    confronto bit significativi interi

    Salve,
    esiste un modo efficente per confrontare gli x bit più significativi di due interi senza doverli covnertire e successimente analizzare i bit?
    grazie
    Soffrire sempre mollare mai

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito bene il problema ma puoi testare i bit con l'operatore &
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598
    Allora cerco di spiegarmi meglio.
    supponiamo di avere due interi

    a=12
    b=14

    vorrei verificare che i primi due bit dei due numeri siano uguali, in questo caso lo sono (12->1100 e 14->1110) mentre se richiedo se i primi 3 bit sono uguali mi dovrebbe ritornare false.

    spero di essere stato chiaro.
    grazie ancora.
    Soffrire sempre mollare mai

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Attenzione ... devi essere preciso ... se a e b sono interi a 32 bit i "primi bit" non sono quelli che hai detto tu perchè il dato viene espresso in binario con 32 bit

    00000000000000000000000000001100
    00000000000000000000000000001110

    Quindi devi specificare il numero dei bit che vuoi confrontare ... ad esempio tu parli dei bit 3, 2 e 1
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598
    supponiamo di prendere il numero

    00000000000000000000000000001100

    la parte che a me interessa sono le ultime 4 cifre.....
    e di queste 4 cifre sono interessanto alle cifre 11.
    Come potrei esprimere tale preferenza a C?

    grazie
    Soffrire sempre mollare mai

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Per ottenere il terzo bit meno significativo, fai una cosa tipo

    codice:
    int t = n & 4;
    Per il quarto,

    codice:
    int q = n & 8;
    Infatti, supponiamo di voler verificare il terzo bit meno significativo di 12:

    codice:
    0000000000001100 &  [12]
    0000000000000100 =  [4]
    -------------------
    0000000000000100
    Facendo un and tra tutti i bit di entrambi i due numeri, si ottiene sempre zero in qualsiasi posizione in cui la "maschera" (il 4, nel nostro caso) abbia uno zero. Solo in corrispondenza dei bit a 1 della maschera è possibile ottenere 1, e ovviamente solo nel caso che sia 1 anche il bit del numero che stai controllando.

    Se ottieni un numero diverso da 0, allora il bit che hai controllato era a 1.

    codice:
    if (numero & 4)
    {
        //bit a 1
    }
    else
    {
        //bit a 0
    }
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Puoi anche fare l'and con il valore 12 per ottenere lo stato dei due bit ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Ah giusto, servono insieme, non ci avevo pensato...

    Quindi devi controllare se (n & 12) == 12, giusto?
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    n & 12

    il risultato potrà essere

    0
    8
    4
    12

    che poi sarebbero le combinazioni

    00
    01
    10
    11

    corrispondenti per i bit in questione
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598
    devo ringraziarvi per le risposte chiare ed esaurienti.
    grazie 10000.

    Spero di non approfittare troppo se invice volessi sapere il bit della x posizione?

    es. 12 --> 1100

    voglio sapere quale bit c'è nella terza posizione in questo caso 0
    quale bit c'è nella seconda posizione in questo caso 1

    GRAZIE ANCORA
    Soffrire sempre mollare mai

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.