Ho passato un po’ di tempo a cercare in .Net una soluzione per tradurre l’operatore >>> usato in javascript.
Non l’ho trovata.
Allora mi sono scritto una piccola funzione che fa la stessa cosa ma deve essere modificata se la variabile è un Int32 oppure un Int64. Preferibilmente utilizzerei UInt32 / UInt64.
La modifica da fare è cambiare la costante 32 o 64.
La funzione “Shift right zero fill” a differenza dello shift right comune ( >> ), aggiunge 0 a destra del numero binario. Anche >> aggiunge 0 ma solo se il numero è positivo…
Questa funzione non fa altro che :
- Fare il right bit shift comune ( >> )
- Comporre una maschera di bit con tanti zero a dx quanti sono i bit shiftati e il resto della maschera a 1, e poi fare un AND logico.
la funzione è la seguente:
private UInt32 shiftrZeroFill(UInt32 number, Int32 bits) { UInt32 p = UInt32.MaxValue; UInt32 r = ~((p >>= (32 - bits)) << (32 - bits)); return (number >> bits) & r; }