D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
nmap
/
nselib
/
Filename :
bit.lua
back
Copy
--- -- Bitwise operations on integers. -- -- THIS LIBRARY IS DEPRECATED, Please use native Lua 5.3 bitwise operators. -- -- @copyright BSD License -- @see https://www.lua.org/manual/5.3/manual.html#3.4.2 -- @class module -- @name bit local select = select local _ENV = {} --- Returns the one's complement of <code>a</code>. -- -- REPLACEMENT: <code>~a</code> -- @param a Number. -- @return The one's complement of <code>a</code>. function bnot(a) return ~a end --- Returns the bitwise and of all its arguments. -- -- REPLACEMENT: <code>a & b</code> -- @param ... A variable number of Numbers to and. -- @return The anded result. function band(a, b, ...) a = a & b if select("#", ...) > 0 then return band(a, ...) else return a end end --- Returns the bitwise or of all its arguments. -- -- REPLACEMENT: <code>a | b</code> -- @param ... A variable number of Numbers to or. -- @return The ored result. function bor(a, b, ...) a = a | b if select("#", ...) > 0 then return bor(a, ...) else return a end end --- Returns the bitwise exclusive or of all its arguments. -- -- REPLACEMENT: <code>a ~ b</code> -- @param ... A variable number of Numbers to exclusive or. -- @return The exclusive ored result. function bxor(a, b, ...) a = a ~ b if select("#", ...) > 0 then return bxor(a, ...) else return a end end --- Returns <code>a</code> left-shifted by <code>b</code> places. -- -- REPLACEMENT: <code>a << b</code> -- @param a Number to perform the shift on. -- @param b Number of shifts. function lshift(a, b) return a << b end --- Returns <code>a</code> right-shifted by <code>b</code> places. -- -- REPLACEMENT: <code>a >> b</code> -- @param a Number to perform the shift on. -- @param b Number of shifts. function rshift(a, b) return a >> b end --- Returns <code>a</code> arithmetically right-shifted by <code>b</code> -- places. -- @param a Number to perform the shift on. -- @param b Number of shifts. function arshift(a, b) if a < 0 then if a % 2 == 0 then -- even? return a // (1<<b) else return a // (1<<b) + 1 end else return a >> b end end --- Returns the integer remainder of <code>a</code> divided by <code>b</code>. -- -- REPLACEMENT: <code>a % b</code> -- @param a Dividend. -- @param b Divisor. function mod(a, b) return a % b end return _ENV