Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [delphi] comando shr

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315

    [delphi] comando shr

    ciao,

    per favore qualcuno mi può spiegare questo comando... 'shr'

    vengono letti da un file i primi 4 byte

    F.Read(Buffer, 4);

    quindi ho una variabile che si chiama buffer lunga 4 caratteri

    adesso eseguono questo comando:

    MPEGVer := (Buffer[1] shr 3) and $03;

    agiscono sul 1 carattere della variabile buffer.



    grazie

  2. #2
    Uno shift right (shr) di n bit equivale ad una divisione per 2^n.

    Esempio: 80 shr 3 = 80 / 8 = 10

    D'altra parte uno shift left (shl) di n bit è una moltiplicazione per 2^n.

    Esempio: 80 shl 2 = 80 * 4 = 320
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    grazie per la risposta... ma:

    in questo comando
    MPEGVer := (Buffer[1] shr 3) and $03;

    probabilmente buffer[1] = '1'

    viene trasformato il valore byte '1' in bites????

    e poi ancora che vuol dire: 'and $03'


    grazie e scusami se so de coccio!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Il valore ASCII di '1' e' 0x31. In binario

    00110001

    L'operazione ( ... shr 3) and $03 fa in modo che vengano isolati i due bit in rosso

    00110001

    Lo shr effettua lo shift a destra 3 volte, quindi

    00011000 primo shr
    00001100 secondo shr
    00000110 terzo shr

    e la and $03 considera soltanto i primi due bit a destra, azzerando gli altri ... quindi

    00000010

    Il risultato in decimale, quindi, sarà 2
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    grazie!

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