我想用按位功能(bit-shift-right
,bit-and
等)Clojure中,其中操作数是16个无符号整数。
16位整数是从0到65535的十进制数,或者是从0000 0000 0000 0000到1111 1111 1111 1111的二进制数。
例如,这里的123是java.lang.Long,因此将产生错误的答案:
(bit-not 123)
我如何使123为无符号的16位整数,以便上面的代码产生正确的答案(十进制为65412)?
因此0000 0000 0111 1011(123)应该变成1111 1111 1000 0100(65412)。
这有效:
(->> 123
bit-not
(bit-and 16rFFFF))
;65412
您可以将其缩短为:
(->> 123
(bit-and-not 16rFFFF))
;65412
我们使用long
s作为unsigned int
s的代理。JVM没有unsigned int
s或long
s,无论您使用哪种语言。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句