gpt4 book ai didi

ios - 有符号整数,算术左移

转载 作者:行者123 更新时间:2023-11-28 12:30:53 27 4
gpt4 key购买 nike

我试图了解“有符号整数”和“算术左移”在 swift 和 iOS 中的工作原理。

在书中,swift programming language 3.0,是这样写的

enter image description here

我用下面的代码试了一下:

enter image description here

我理解有符号整数,-120 的二进制表示为 10001000,因此向左移动一位将导致 00010000,等于 16(如代码所示)。但是 16 不是 -120 的两倍

书上的说法不对吧?还是我遗漏了什么?

最佳答案

您遇到整数溢出。加倍效应只有在所有位都有空间时才会起作用。

如果您使用 Int16Int32Int64Int(映射到Int32Int64,具体取决于系统)。考虑 Int16 的情况。

-120 作为 Int16 的二进制表示是 1111 1111 1000 1000。左移一位,我们得到:1111 1111 0001 0000。正如您所期望的,这是 -240 的二进制表示。这是它的代码:

let a: Int16 = -120
print(a << 1)

关于ios - 有符号整数,算术左移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127426/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com