百科问答小站 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范围的数。




  

相关话题

  Java为什么设计成`String`不能用`==`比较值? 
  是什么原因让我们用的计算机是二进制而不是三进制或者十进制? 
  亲爱的程序员们,一天写多少代码才算达标? 
  为什么总是有人说 Java 啰嗦,却没人说 C++ 啰嗦? 
  打字速度对编程的影响大吗? 
  为什么图片反复压缩后普遍会变绿,而不是其他颜色? 
  你在阅读源代码或设计文档时,看到哪些惊艳的技巧? 
  今天和搞计算机的朋友争论了,关于格斗游戏顶级玩家和电脑打的问题,谁赢?例如拳皇97,DNF? 
  化工硕士在读是否该转行计算机? 
  如果把电脑主机的两个 USB 接口用一根数据线连起来,会发生什么? 

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





© 2025-04-03 - tinynew.org. All Rights Reserved.
© 2025-04-03 - tinynew.org. 保留所有权利