请问 ^ 2 一个数字是怎么计算的?

lcjcians · 2017-12-30 00:20:28 · 1600 次点击

这些要慢慢探索,有很多好得位运算优化程序得方法,对^得应用例如我知道一个
位运算求负数的绝对值?

(^n)+1

它利用的性质是补码的补码等于原码,如果你知道其它好玩的也可以告诉我,我也在不断了解一些通过位运算优化程序的方法

#3
更多评论

^在 go 中可以做单目运算符表示取反,也可以做双目运算符表示异或,异或很简单。至于取反,例如一个常量3不特殊声明应该是int类型。

fmt.Printf("%T", 3)

那么视机器而定,64位机器就是int64, 32位机器就是int32。例如64位机器上:

3 的二进制表示为:

0000....011

^3的二进制表示为:

1111....100

-4的二进制表示需要两步求得补码:

原来(只看4):
0000....100
取反:
1111....011
加一:
1111....100

结果就是 ^3 == -4

#1

@leavesdrift 好的 这个懂了 那我想问下 这个有什么作用?一般在哪些情况下会用到

#2