bit-shift

    5calore

    3risposta

    Questa domanda è stato ispirato dalle (inattese) risultati di questo codice: uint16_t t16 = 0; uint8_t t8 = 0x80; uint8_t t8_res; t16 = (t8 << 1); t8_res = (t8 << 1); printf("t16: %x\n", t16);

    10calore

    6risposta

    Qual è lo scopo dell'utilizzo degli operatori di spostamento anziché utilizzare la divisione e la moltiplicazione? Ci sono altri vantaggi nell'utilizzare gli operatori di turno? Dove si dovrebbe prova

    15calore

    4risposta

    Sul mio compilatore, il seguente pseudo codice (valori sostituiti con binario): sint32 word = (10000000 00000000 00000000 00000000); word >>= 16; produce una word con un campo di bit che assomiglia

    5calore

    3risposta

    non capisco perché questo mi dà la stessa risposta: long long a = 3265917058 >> 24; std::cout << a << std::endl; //194 long long ip = 3265917058; long long b = ip >> 24; std::cout << b << std::en

    10calore

    1risposta

    Eventuali duplicati: why is 1>>32 == 1? -1 come un int convertito in binario è rappresentato da 32 1 di. Quando lo spostamento a destra di 31 volte, ottengo 1 (31 0 e 1). Ma quando lo spostamento a de

    5calore

    1risposta

    Il codice seguente emette 0,1,32,33. Che è controintuitivo per non dire altro. Ma se sostituisco il letterale 1 con la costante annonata tipo "UNO", il ciclo funziona correttamente. Questo è con gcc 4

    30calore

    6risposta

    Apple talvolta utilizza l'operatore Bitwise-Shift nelle definizioni enum. Ad esempio, nel CGDirectDisplay.h file di che fa parte del core grafico: enum { kCGDisplayBeginConfigurationFlag = (1 <<

    8calore

    1risposta

    Quindi ho il seguente codice linguaggio assembly che ho bisogno di convertire in C. Sono confuso su alcune righe del codice. Capisco che questo è un ciclo for. Ho aggiunto i miei commenti su ogni riga

    17calore

    7risposta

    Ho imparato a lavorare con l'assemblatore 80x86, quindi nell'operazione di cambio bit-saggio, ho riscontrato un problema con l'utilizzo di SAL e SHL. I significa la differenza tra le righe di codice c

    27calore

    3risposta

    So che si può ottenere il primo byte utilizzando int x = number & ((1<<8)-1); o int x = number & 0xFF; Ma non so come ottenere il byte n-esima di un numero intero. Ad esempio, 1234 è 00000000 0000