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

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这种语言比较是相同,你说你会用哪个语言?语言再怎么设计,用不用补码是内部的事情,目的肯定是要构造一种人类可以理解和学习的语言,而不是处处违反直觉。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)