首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个位是java中int类型的高阶位?

哪个位是java中int类型的高阶位?
EN

Stack Overflow用户
提问于 2020-12-08 08:29:18
回答 1查看 183关注 0票数 0

我读过,在java中,负整数是通过取一个正整数的2的补来得到的。简而言之,它还意味着将高阶位设置为1,以便将正整数转换为负数。出于好奇,我试着找出整数中的哪个位作为java中的高阶位。现在,java中整数的限制是-(2^32)到(2^32)-1。所以我决定,如果我继续检查32位位中的每一位,我就会知道哪一位是较高的位。

下面是我使用的代码。

代码语言:javascript
复制
public class Main
{
   public static void main(String[] args) {
      int x = 5;
      for(int i = 0; i<32; i++) {
        if((x|(1<<i)) == -5) {
            System.out.println(i + "th bit is the higher order bit");
        }
      }
   }
 }

但是没有一个比特是高阶比特。这是哪一位?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-08 08:36:50

如果要打印5-5的二进制表示

代码语言:javascript
复制
System.out.println (Integer.toBinaryString (5));
System.out.println (Integer.toBinaryString (-5));

你会得到:

代码语言:javascript
复制
101
11111111111111111111111111111011

或者,如果我们添加领先的0s:

代码语言:javascript
复制
00000000000000000000000000000101
11111111111111111111111111111011

正如您所看到的,这两个表示形式的不同不仅仅是符号位(这是最左边的位)。因此,您的代码不正确。

设置5二进制表示的符号位

代码语言:javascript
复制
System.out.println (5|(1<<31));

它不会导致-5,而是导致:

代码语言:javascript
复制
-2147483643
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65195534

复制
相关文章

相似问题

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