我喜欢打高尔夫球dc,但有时由于dc没有按位操作而感到沮丧。
挑战
提供实现C位操作的相当于提高4层命名的功能&,|,~和^(按位AND,OR,NOT和XOR)。每个函数将使用两个操作数(~仅使用一个),这些操作数至少是32位无符号整数。每个函数将返回与操作数相同的位宽的无符号整数。
限制
您只能使用支持的操作dc。这些是:
+-*/算术加法,减法,乘法和除法~模(如果您的语言支持,则为divmod)^求幂|模幂v平方根>>===!=<=<标准平等/不平等经营者>><<位移位运算符。dc没有这些功能,但是由于它们是通过除以2的幂进行琐碎实现的,所以我将允许这些。
dc我使用(递归)宏和(不等式)操作笨拙地构建了控制结构。您可以使用您的语言具有的任何内置控制结构。
您也可以使用逻辑运算符 && || !,即使这些运算符不能直接在中使用dc。
你不能使用位运算符 &,|,~和^或平凡实现它们的任何功能。
另外,您不得使用内置的字符串转换基础运算符或函数。
还请考虑提供一个测试程序或在线编译器代码段(不包含在高尔夫球成绩中)以帮助您验证答案。