我对所有这些变化的东西感到困惑,因为我看到了两个不同的移动相同数字的结果。我知道有很多关于这个问题的问题,但似乎我仍然无法找到我想要的东西(随意发布一个问题的链接或一个可能有帮助的网站)。
所以,首先我看到数字13
二进制文件如:001101
(不是整个字位)。
当应用2
向左移位时,它们会保留最后一位(可能是符号位),结果类似于0|10100 = 20
。但是在其他地方,我看到数字13
表示为:01101
,现在01101<<2
为0|0100 = 4
。我知道向左移动与乘以基数相同,但这让我感到困惑。我应该13
作为001101
还是01101
并应用转移。
我认为考虑到结果,我们省略了溢出。
谢谢!
答案 0 :(得分:0)
此行为似乎与长度为5的整数相对应 4(以位为单位,不包括符号位)。所以似乎溢出确实是问题所在。如果不是,您是否可以添加一些关于这些奇怪结果发生的背景?
答案 1 :(得分:0)
001101
,01101
以及1101
和00001101
以及其他尺码同样声称&#34;正在&#34; 13.你真的不能说13有一个确定的大小,而是有一个大小的操作(可能是无限的,然后左移从不包装)。
因此,您必须决定您所做的班次大小,与您转移的价值无关。常见的选择是32或64位,但你肯定不限于此,尽管&#34;奇怪&#34;尺寸需要在典型的机器和典型的编程语言中实施。
顺便说一句,标志永远不会故意保留在左移位置,没有任何有用的方法可以做到这一点:强行保持它意味着包装以一种非常奇怪的方式发生,而不是通常的包装模数为2的幂(其中有很好的属性)。