Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    [C] programma che usa le mask

    Ciao,
    ho scritto questo programma che usa le maschere per vedere qual'è l'ultimo bit di un numero

    codice:
    #include <stdio.h>
    
    int main(){
    
    int i, mask = 1;
    
    for(i=0; i<=10; i++)
            printf("%d\n", i&mask);
    
    return 0;
    }
    per 0 mi darà 0 per 1 darà 1 per 2 darà 0, etcetc

    Se volessi modificare tale programma per visualizzare il valore dei 2 bit meno significativi dei numeri cosa dovrei fare?

    Grazie
    Andrea

  2. #2
    devi porre mask=3

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    ora provo ma perchè mask = 3 ?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Perchè è la maschera di bit che mostra solo gli ultimi 2 bit:
    codice:
    0 --> 00000000
    1 --> 00000001
    2 --> 00000010
    3 --> 00000011
    4 --> 00000100
    ecc..
    Mettendola in AND bit a bit con il numero da testare, la maschera ti ritornerà il valore di tutti i bit che nella maschera sono settati a 1


    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
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    mmm non và...l'output dei primi 20 risultati con mask è:

    [root@localhost prog]# ./mask2
    0
    1
    2
    3
    0
    1
    2
    3
    0
    1
    2
    3
    0
    1
    2
    3
    0
    1
    2
    3
    0


    che senso ha?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da D4rkAng3l
    [root@localhost prog]# ./mask2
    0
    1
    2
    3
    che senso ha?
    Che vuol dire? Certo che ha un senso!

    Gli ultimi 2 bit possono assumere valore

    00
    01
    10
    11

    che in decimale equivalgono a

    00 = 0
    01 = 1
    10 = 2
    11 = 3

    Quindi, non capisco la tua osservazione ...

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io credo che il problema sia di fondo:

    Hai una minima esperienza di basi di numerazioni?
    In particolare, sai cos'è la base 2?
    Sai come vengono rappresentati i numeri nei computer?
    Hai una minima preparazione sull'aritmetica in base 2?
    Conosci gli operatori bit per bit?


    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 L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... visto che sta scrivendo dei piccoli programmini di questo tipo, penso stia imparando ...

    Io penso soltanto che si aspettasse di vedere

    00
    01
    10
    11

    ... tutto qui ...

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.