Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Operatore shift

Visualizzazione discussione

  1. #1

    Operatore shift

    Buongiorno a tutti,
    sto facendo un programma in c# e ho un quesito che credo che sia comune a tutti i linguaggi di programmazione (per questo non ho specificato il linguaggio nel titolo). Questo programma prevede un algorito di potatura AlphaBeta di un albero a molti livelli, pertanto sto cercando di farlo il più snello possibile.

    Devo valorizzare un unsigned long a 64 bit.
    Il valore decimale è: 576460752303423488
    In binario corrisponde a:
    codice:
    00001000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    ho suddiviso i 64 bit in 8 gruppi da 8 per una maggiore leggibilità.

    Guardando qua e la su internet ho notato che in casi del genere spesso non viene valorizzato direttamente il long assegnando un valore decimale come segue...
    codice:
    n = 576460752303423488;
    ...ma viene valorizzato tramite l'operatore shift, in questo caso:
    codice:
    n = (ulong)1 << 59;
    Questo secondo modo per quanto mi riguarda è sicuramente più intuitivo, perchè nel mio caso ognuno dei 64 bit rappresenta una casella di una scacchiera di 64 caselle, quindi leggendo il codice capisco di che casella si tratta.

    Il dubbio è: ma è anche più veloce l'esecuzione del programma utilizzando l'operatore shift?
    Cioè, visto che il numero ulong va convertito in bit per salvarlo in memoria, la conversione in bit (fatta dividendo il numero per 2, prendendo il resto, ecc...) forse è più lenta rispetto ad eseguire lo shift per 59 volte.

    Se fosse vero, allora utilizzare lo shift non è solo una questione di lettura del codice, ma anche di velocità di esecuzione.

    Avete qualche nozione a riguardo?

    Grazie
    Luciano
    Ultima modifica di Luciano79; 18-08-2016 a 15:05

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.