【发布时间】:2015-10-05 09:53:01
【问题描述】:
我创建了一个这样的变量:
let value:Int8 = 55
我发现我可以做类似的事情
value >> 3 // and the result is 6
value << 3 // and the result is 72-
我想问你:
- 这些>>和
- 我的代码中的这些数字是如何计算的?
【问题讨论】:
我创建了一个这样的变量:
let value:Int8 = 55
我发现我可以做类似的事情
value >> 3 // and the result is 6
value << 3 // and the result is 72-
我想问你:
【问题讨论】:
<<逻辑左移
>>逻辑右移
您的 Int8 55 以二进制形式表示为:
0 0 1 1 0 1 1 1
value >> 3 表示将位右移并在空位中添加零,因此您最终得到
0 0 0 0 0 1 1 0
十进制是6
value << 3 表示将位向左移动并在空位中添加零,因此您最终得到:
1 0 1 1 1 0 0 0
十进制为-72
请注意,这是一个负数,因为最高有效位(最左边的位)是 1。 而 iOS 和 OSX 使用2’s complement 来存储负数。
【讨论】: