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