BitRRotate

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This functions performs a bitwise circular right-rotation on the integer value by integer n positions. See Bitwise operation for more details.

Syntax

int bitRRotate ( int value, int n )

Required arguments

  • value: The value you want to perform the rotation on.
  • n: The amount of positions to rotate the value by.

Returns

Returns the circular right-rotated value as integer.

Example

Click to collapse [-]
Client

This example adds the clientside command /rightrotate [value] [positions = 1], which will print the result from the function bitRRotate.

function getNumberAsBitString(value)
    if type(value) ~= 'number' then
        return false
    else
        local binary = ''

        for field = 31, 0, -1 do
            binary = binary .. bitExtract(value, field)

            if field % 4 == 0 then
                binary = binary ..' '
            end
        end

        return binary
    end
end

addCommandHandler('rightrotate',
    function (command, value, positions)
        if type(value) ~= 'string' or value:len() == 0 then
            return outputChatBox('* Syntax: /rightrotate [value] [positions = 1]')
        end

        if type(positions) ~= 'string' or positions:len() == 0 then
            positions = 1
        end

        local result = bitRRotate(tonumber(value), tonumber(positions))
        local binary = getNumberAsBitString(result)

        outputChatBox('* Decimal: '.. result ..', Binary: '.. binary)
    end
)

If you trigger the command with /rightrotate 0xFF0000 16 you will receive as response:

* Decimal: 255, Binary: 0000 0000 0000 0000 0000 0000 1111 1111 

See Also