1. un_or_all

global function un_or_all(atom a) 
	atom item, x 
	sequence result 
 
	item = 1 
	result = {} 
	while (a) do 
		x = and_bits(a, item) 
		if (x) then 
		result &= x 
		a -= x 
		item *= 2 -- left shift 
	end while 
 
	return result 
end function 
 
? un_or_all(or_all({8, 1, 2, 32})) -- {1, 2, 8, 32} 
? un_or_all(or_all({1, 5, 8, 16, 32})) -- {1, 4, 8, 16, 32} 

This message brought to you by
Unkmar - Lucius L. Hilley III

new topic     » topic index » view message » categorize

2. Re: un_or_all

unkmar said...
:This message brought to you by 
:Unkmar - Lucius L. Hilley III 
 
global function un_or_all(atom a) 
	atom item, x 
	sequence result 
 
	item = 1 
	result = {} 
	while (a) do 
		x = and_bits(a, item) 
		if (x) then 
		  result &= x 
		  a -= x 
                end if 
	     item *= 2 -- left shift 
	end while 
 
	return result 
end function 
 
? un_or_all(or_all({8, 1, 2, 32})) -- {1, 2, 8, 32} 
? un_or_all(or_all({1, 5, 8, 16, 32})) -- {1, 4, 8, 16, 32} 

thanks Unkmar, that gives me something to work with

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu