Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中字节和Int的左移位_Java - Fatal编程技术网

Java中字节和Int的左移位

Java中字节和Int的左移位,java,Java,我是Java新手。所以,我想了解它背后的工作原理 int one_int=1; 字节1=1; 一个两个移位操作产生相同的二进制值10000002。区别在于该值的最高有效位的解释 有符号整数的最高有效位确定该数字是正(零)还是负(一) int是32位类型,因此其最高有效位为零,因此10000002被解释为正128位 “byte”是8位类型,因此其最高有效位为1,因此10000002被解释为负-128 在java中 整数由32位组成 字节由8位组成 将字节向左移动7次时: 00000001->

我是Java新手。所以,我想了解它背后的工作原理

int one_int=1;
字节1=1;

一个两个移位操作产生相同的二进制值10000002。区别在于该值的最高有效位的解释

有符号整数的最高有效位确定该数字是正(零)还是负(一)

  • int
    是32位类型,因此其最高有效位为零,因此10000002被解释为正128位
  • “byte”是8位类型,因此其最高有效位为1,因此10000002被解释为负-128
    • 在java中

      • 整数由32位组成
      • 字节由8位组成
      将字节向左移动7次时:

      00000001->10000000

      将int向左移动7次时:

      00000000000000000000000000000000000001->00000000000000000000000000000000000010000000

      因为它们都用于表示有符号和无符号数字,所以我们使用该操作


      这意味着第一位(MSB)表示数字的符号(0表示+,1表示-)。

      字节的第一位是符号位。所以,1000 0000=>-128,但整数的第8位只是整数的一部分。比如,0000 0000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000。因此,整数符号位与字节的符号位不同,从右看@vatsalmevada的可能重复项我认为这不是一个好的重复项,因为它没有专门处理符号位。
      (byte)128==-128
      谢谢@dasblinkenlight@VishalSharma不客气。如果这回答了你的问题,请考虑通过点击旁边的复选标记来接受其中一个答案。
      int one_int = 1; 
      byte one = 1;
      one <<= 7;
      one_int <<= 7;
      System.out.println(one_int); //Output is 128 
      System.out.println(one); //Output is -128