百科问答小站 logo
百科问答小站 font logo



Java 位与0xff 和位或0x00 得到的结果为什么不同? 第1页

  

user avatar   recruits 网友的相关建议: 
      

(byte)-1 参与运算时会转换为int,其二进制形式为-1的补码,即32个1。由于32位中的高16位并不会影响结果,所以我们仅仅对低16位来分析。

(byte)-1 & 0xff => 1111111111111111 & 0000000011111111 => 0000000011111111 => 255

(byte)-1 | 0x00 => 1111111111111111 | 0000000000000000 => 1111111111111111 => -1

由于java默认整数类型为int,所以结果会出现超过byte范围的数。




  

相关话题

  为什么在 Windows 中常常见到的第一个分区的盘符是 C:,而不是 A:? 
  晶圆为什么是圆的? 
  如何在一个月内提高 C++ 水平? 
  怎样让自己的 PC 拥有强大的功能和极高的效率? 
  “C++”读作「C 加加」,为什么“C#”不能读作「C 井」呢? 
  全员编程的时代,我是不是应该放弃这条路? 
  为什么有些人在报考大学时会放弃某些被普遍认为薪酬高的专业,转而报考同学部的其他专业? 
  有没有什么工具可以帮助理解源代码的? 
  私人网站能看到用户的密码吗? 
  PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点? 

前一个讨论
为啥苏联当年也是联邦制却解体,而美国也联邦制却不解体。这两个联邦制有什么关键区别?
下一个讨论
高中生花钱上补习班是一种失败人士送钱的行为吗?





© 2025-01-19 - tinynew.org. All Rights Reserved.
© 2025-01-19 - tinynew.org. 保留所有权利