The Algorithms logo
The Algorithms
AboutDonate

And

d
-- Bitwise AND of two uint53s
return function(
	n, -- uint53
	m -- uint53
)
	local res = 0
	local bit = 1
	while n * m ~= 0 do -- while both are nonzero
		local n_bit, m_bit = n % 2, m % 2 -- extract LSB
		res = res + (n_bit * m_bit) * bit -- add AND of LSBs
		n, m = (n - n_bit) / 2, (m - m_bit) / 2 -- remove LSB from n & m
		bit = bit * 2 -- next bit
	end
	return res -- uint53: n AND m
end