java中byte类型

在计算机中数据都是以二进制原码的形式存在的,而数字间的运算都是以补码的形式进行。然而补码又分为正数的补码跟负数的补码;

原码:

      1.数字的最原始二进制

反码:

       1. 一个数如果是正,则它的反码与原码相同;
       2. 一个数如果是负,则符号位为1,其余各位是对原码取反;

补码:

     1. 一个数如果为正,则它的补码跟原码相同
     2. 一个数如果是负,则它的补码为负数反码加1

接下来要说的就是java中byte跟int之间的关系,1byte=8bit,1int=4byte=32bit,在java编程中经常要遇到的问题是byte跟int的转换:
byte 占8位,取值范围是11111111~011111111 -128到127
int 占32位。取值范围是 -2的31次方 到2的31次方

int转byte则是取低8位丢弃后24位,并将取的结果作用于byte的取消范围内;

byte转int则是以补位的形式补齐后24位形成一个32位的int,因为byte的取值范围有限,所以在byte表示的复数转为int自然随取值范围的扩散而扩散,即比如-128在byte中是11111111,转为int自然会转为-128在int的位置,所以byte转int,如果byte的数是复数,转int自然是复数,为了保证byte转int的数为正,那么就得将后24位舍弃(丢弃最高位符号位) &0xff

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很早的时候由于工作需要,接触过一点 Java,于是有了这个坑,今天回头看到自己在 Stackoverflow 上提...
    mconintet阅读 30,267评论 0 6
  • 书中关于原码、反码、补码和移码的定义如下(n是机器字长):原码: 反码: 补码: 移码: 原码, 反码, 补码的基...
    困卡阅读 16,257评论 2 8
  • 常量的概述和使用 A:什么是常量在程序执行的过程中其值不可以发生改变 B:Java中常量的分类字面值常量自定义常量...
    野望君阅读 3,764评论 0 0
  • 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的...
    点赞狂魔刀锋君已放弃治疗阅读 4,373评论 0 4
  • 本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可...
    yang2yang阅读 6,839评论 1 13