首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >左移运算符如何保留符号?

左移运算符如何保留符号?
EN

Stack Overflow用户
提问于 2012-08-23 19:46:32
回答 2查看 2.3K关注 0票数 3

我使用looked in this question来理解为什么在大多数语言中没有算术左移运算符。但是我们如何处理负整数呢,因为左移会丢弃它。以-2^5为例,结果应该是负的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-23 19:51:28

不,符号位永远不会被左移位抛出,除非你提交一个溢出。原因?在二的补码编码中,负数的左侧全是1,而正数的左侧全是0。就像符号位被复制到右边一样。顺便说一下,这就是为什么术语“符号扩展”是有意义的,这也是Java中默认的右移位的工作方式。

代码语言:javascript
复制
  int i = -1;
  System.out.format("%3d = %s\n", i, Integer.toBinaryString(i));
  i <<= 5;
  System.out.format("%3d = %s\n", i, Integer.toBinaryString(i));

打印

代码语言:javascript
复制
 -1 = 11111111111111111111111111111111
-32 = 11111111111111111111111111100000
票数 9
EN

Stack Overflow用户

发布于 2012-08-23 19:54:44

对于这个问题,我最好的答案就是在手术前后改变标志。这可能看起来太明显了,但事实是,当符号改变时,位会以一种特定的方式改变

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12090831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档