BITRSHIFT

Un usuario Pregunto ✅

Greg_Deckler

En mi búsqueda reciente para crear o catalogar tantos equivalentes de DAX para funciones de Excel, wcon DEC2BIN y BIN2DEC descubierto, podemos implementar funciones de desplazamiento de bits como BITRSHIFT (Bit Right Shift):

BITLSHIFT = 
    VAR __DecimalNumber = SELECTEDVALUE('Decimal'[Decimal],0)
    VAR __Bits = SELECTEDVALUE('Bits'[Bits],0)
    VAR __BitShift = REPT("0",ABS(__Bits))
    VAR __Binary = 
        IF(
            __DecimalNumber = 0,
            "0",
                VAR __Table = 
                    ADDCOLUMNS(
                        GENERATESERIES(0,LOG(__DecimalNumber,2),1),
                        "Bit",MOD(TRUNC(__DecimalNumber / POWER(2,[Value])),2)
                    )
            RETURN
                CONCATENATEX(__Table,[Bit],"",[Value],DESC)
        )
    VAR __Shifted = 
        IF(
            __Bits >= 0,
            LEFT(__Binary,LEN(__Binary) - __Bits),
            __Binary & __BitShift,
        )
    VAR __Table = 
        ADDCOLUMNS(
            GENERATESERIES(0,LEN(__Shifted)-1,1),
            "Decimal",POWER(2,[Value]) * MID(__Shifted,LEN(__Shifted) - [Value],1)
        )
RETURN
    SUMX(__Table,[Decimal])

NOTA: ¿Es compatible con los números negativos que preguntas? Si y no. No admite el cambio de números decimales de entrada negativa, pero tampoco lo hace la función BITRSHIFT de Excel. Sin embargo, puede tener un número negativo de bits para cambiar al igual que la versión de Excel. El uso de un número negativo de bits lo convierte efectivamente en un BITLSHIFT.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *