为什么JAVA中(byte)128结果为-128;(byte)-129结果为127

在JAVA中默认的整型为int型,int型占4个字节,为32位。byte占一个字节为8位。

JAVA中的二进制都是采用补码形式存储:

⑴一个数为正,则它的原码、反码、补码相同

⑵一个数为负,则符号位为1,其余各位是对原码取反,然后整个数加1

int类型的128 原码为0000 0000 0000 0000 0000 0000 1000 0000

当将int类型128转换为byte类型时,发生强制转换,截取了最后8位为

1000 0000 由于第一位代表符号位,按理解应该此处应该表示为-00000 0000应该是一样的表示0。但是我们都知道byte占8位,28为256,byte最多可以表示256个不同的数值。

0000 0000~0111 1111 128个

1000 0000~1111 1111 128个

如果 byte中0000 00001000 0000表示0浪费了内存,所以byte中1000 0000表示-128。

int类型的-129原码为1000 0000 0000 0000 0000 0000 1000 0001

补码为1111 1111 1111 1111 1111 1111 0111 1111

强制转换为byte类型为0111 1111

0111 1111为正数,值为127

最新文章

  1. GJM : Unity3D HIAR -【 快速入门 】 七、使用本地识别包
  2. [解决方案] pythonchallenge level 3
  3. redis集群讨论
  4. Error: [$rootScope:inprog] $digest already in progress
  5. javascript中的true和false
  6. (转载)移动WEB前端开发资源整合
  7. Git Server & Git Hook
  8. Inno setup 简单打包教程
  9. 蓝缘管理系统第三版推出。springMVC4.0+shiro1.2.3+spring4.x+Mybaits3.2.8
  10. 关于java对象的思考
  11. Graphql graffiti
  12. 14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用
  13. Mono for Android开发调研笔记
  14. ASP.NET Core Razor中处理Ajax请求
  15. 生成二维码、条形码、带logo的二维码
  16. python按照字典排序
  17. vue-cli 部分浏览器不支持es6的语法-babel-polyfill的引用和使用
  18. mysql主从复制--重置操作reset master, reset slave
  19. 模拟T1数字number
  20. Linux驱动之内存访问

热门文章

  1. Bugku-ez_misc[wp]
  2. MapReduce原理——Shuffle机制
  3. docker之rabbitmq delayed message exchange
  4. C语言的qsort函数
  5. nginx 同一个域名根据后缀不同访问不同的项目
  6. ES、Lucene、Solr的介绍和区别
  7. nohup--将程序放入后台执行
  8. 排查前端接受后端的map产生的字段错误
  9. seata数据源代理
  10. Gtiee_上传本地项目