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

lcjcians · · 1407 次点击
^在 go 中可以做单目运算符表示取反,也可以做双目运算符表示异或,异或很简单。至于取反,例如一个常量3不特殊声明应该是int类型。 ```go 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
更多评论
<a href="/user/leavesdrift" title="@leavesdrift">@leavesdrift</a> 好的 这个懂了 那我想问下 这个有什么作用?一般在哪些情况下会用到
#2
这些要慢慢探索,有很多好得位运算优化程序得方法,对^得应用例如我知道一个 位运算求负数的绝对值? ``` (^n)+1 ``` 它利用的性质是补码的补码等于原码,如果你知道其它好玩的也可以告诉我,我也在不断了解一些通过位运算优化程序的方法
#3