weixin_438003299 2019-05-26 02:58 采纳率: 66.7%
浏览 2796
已结题

byte和int类型的数字比较

计算机不是补码计算嘛。
b的补码是 1111 1111
i的补码是 1111 1111 1111 1111 1111 1111 1111 1111
为什么这两个相等?
图片说明

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-05-26 08:56
    关注

    不i同类型的数字比较,首先需要做类型转换,byte需要转换成int再比较,在转换的时候,因为byte的位短,那么遵循的规则就是
    如果高位是1,那么在前面补1,如果高位是0,在前面补0
    因此 1111 1111 前面补1就是 1111 1111 1111 1111 1111 1111 1111 1111

    这个问题也可以换一个角度看,比如我是一个什么都不懂的小白,我使用一种叫做Xava编程语言,这种语言byte的-1、short的-1、int的-1去比较都不同,而 Java这种语言比较是相同,你说你会用哪个语言?语言再怎么设计,用不用补码是内部的事情,目的肯定是要构造一种人类可以理解和学习的语言,而不是处处违反直觉。

    评论

报告相同问题?