在Java中为什么byte是-127~128的取值范围?

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

#Exercise Sharing#2019.3.18


package cn.sit.xiaoxiaodao.day0318;

/**
 * @ClassName testData
 * @Description cn.sit.xiaoxiaodao.day0318
 * @Auther Carlos
 * @Date 2019/3/18
 * @Version 1.0
 **/
public class testData {
    public static void main(String[] args) {
        byte i = 127;
        i += 1;
        System.out.println(showType(i) + " : " + i);
    }

/*    private static String showType(Object object){
        String typeName = object.getClass().getName();
        int length = typeName.lastIndexOf(".");
        String type = typeName.substring(length + 1);
        return type;
    }*/

    private static String showType(Object object){
        String type = object.getClass().getTypeName();
        return type;
    }
}
Result

java.lang.Byte : -128

Analysis

​ 基本数据类型byte的大小是1个字节(8位),127+1=128,128用二进制数表示是1000 0000。

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

​ ⑴一个数为正,则它的原码、反码、补码相同
​ ⑵一个数为负,则符号位为1,其余各位是对原码取反,然后整个数加1

​ 在System.out.println调用时,JVM会自动将byte类型转换为int类型,此时进行的是有符号左移操作,前24位全部为1,后8为位1000 0000。

​ 然后以补码形式保存(取反加1):1000 0000 0000 0000 0000 0000 1000 0000

因此System.out.println(showType(i) + " : " + i);输出为-128,即1000 0000 0000 1000 0000(第一个符号位,1负0正)
Java--Integer的常量缓存池(默认-128~127数值范围 JDK1.5之后,新增了自动拆、装箱功能,如以前创建一个Integer对象,需要 使用 “new”关键字 ;而现在Java中可以直接赋值如下: Integer不是new出Integer对象,而是直接赋值,就是自动装箱过程。 Integer a = new Integer("100"); //JDK1.5之后 Integer b = 100; int x = b; 再来测试如下代码: public class IntegerTest { public static void main. 阅读详情

相关推荐

Java中equals和==的区别(Integer[-128~127])

博主处女篇!请大家多多关照 概要:            java中的数据类型,可分为两种:                  1.基本数据类型,也称原始数据类型。byte,shrot,char,int,long,float,double,boolean(存储在内存中的堆栈(以后简称栈))                     他们之间的比较,应用双等号(==),比较 的是他们的值。

温柔常伴 4512

Integer(-127-128之间)相关

package com.company.project.builder; public class IntegerDemo1 { public static void main(String[] args) { Integer a = 120,b = 160; Integer c = 120,d = 160; System.out.printl

wahxsm的博客 844

Java中,为什么byte类型的取值范围-128~127?

原文:https://blog.csdn.net/qq_23418393/article/details/57421688 在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么byte类型的取值范围为什么是[-128,127]而不是[-127,127]。01111111表示最大的数值:127,因为第一位是符号位,所以11111111应该是最小的数值:-127,不是这样才对? 在...

YKWNDY的博客 542

byte取值范围为啥是[-128~127](超详细教学,建议收藏)

使用补码可以解决0的符号问题,且能多一个最低数-128,这就是为什么byte范围是[-128,127]!!

小魏快起床的博客 6187

Javabyte类型的取值范围-128~127

Java中,为什么byte类型的取值范围为[-128-127] 在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么byte类型的取值范围为什么是[-128,127]而不是[-127,127]? 0111 1111表示最大的数值:127,因为第一位是符号位,所以1 1111111应该是最小的数值:-127,不是这样才对? 在解释这个问题之前我们需要了解几个概念:机器数、...

weixin_45082647的博客 508

为什么Javabyte类型的取值范围-128127

byte 长度是1字节,也就是8位,八位二进制数转换为十进制最大值是多少?是255。 如果是unsigned byte 那么取值范围就是 0-255,而Java中的byte是有符号位的,第一位表示正负数,0代表正数,1代表负数。 下面引用其它博友的解答并加以分析: 博友解答: 概念:负数的补码为其原码除符号位外取反然后总体加一 步骤: 1.确定byte是1个字节

Thinking_IN_Java 3268

java基本数据类型byte取值范围-128~127,以及溢出后取值的实现

byte取值范围的计算和溢出取值的计算: 首先看一下byte类型在java.lang包下的源码,源码指定了byte类型的最大值和最小值。 2.在计算机内存存放的数值都是补码形式,第一位为符号位(可以百度补码概念),对应的取值如下: 负整数转换成二进制 方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42,如图4所示为方法解释。最后即为:(-42)10=(11010110)2. 补码 原码 十进制 备注 ...

luzhensmart的专栏 4627

Java为什么byte类型的取值范围-128~127?

在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么byte类型的取值范围为什么是[-128,127]而不是[-127,127]。01111111表示最大的数值:127,因为第一位是符号位,所以11111111应该是最小的数值:-127,不是这样才对? 在解释这个问题之前我们需要了解几个概念:机器数、真值、原码、反码、补码 机器数: 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。 比如:十进制中的

ooooooooooooooxiaosu的博客 1199

关于javabyte类型数据的取值范围-128~127的说明

javabyte类型的数据,存储在计算机内存中占1个字节(即0或者1表示的8位二进制数),数据在计算机中都是按照补码形式表现,因此首先了解一下原码、反码、补码的基本概念。一、原码、反码和补码的对应关系带符号的数据二进制表示的形式最高位代表符号类型,其中,0表示正数,1表示负数。对于正整数而言,原码、反码和补码是相同的,比如127                     符号位          ...

8405

javabyte类型数据的取值范围-128~127的说明

javabyte类型的数据,存储在计算机内存中占1个字节(即0或者1表示的8位二进制数),数据在计算机中都是按照补码形式表现,因此首先了解一下原码、反码、补码的基本概念。 一、原码、反码和补码的对应关系 带符号的数据二进制表示的形式最高位代表符号类型,其中,0表示正数,1表示负数。 对于正整数而言,原码、反码和补码是相同的,比如127 符号位 ...

zhangsir001的博客 1714

java中的byte取值范围为什么-128~127

首先需要明确,java是使用补码来表示二进制数的,在补码中,最高位为符号位,0表示正,1表示负。 例如:10 的原码为 000 010 10 ,(正数的原码、反码、补码都一样); 红色的0(符号位)表示该数是正数 -10的原码为 100 010 10,反码 111 101 01(负数的反码是除符号位的数取反(0变成1,1变成0,符号位不变)),补码 111 101 10(反码加1,符号位会变

for_little_dream的博客 671

Java--Java中,为什么byte类型的取值范围-128~127?

原文链接https://blog.csdn.net/qq_23418393/article/details/57421688 在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么byte类型的取值范围为什么是[-128,127]而不是[-127,127]。01111111表示最大的数值:127,因为第一位是符号位,所以11111111应该是最小的数值:-127,不是这样才对? 在解释这个问题之前我们需要了解几个概念:机器数、真值、原码、反码、补码 机器数: 一个数在计算机中的二进制表

MinggeQingchun的博客 331

关于JavaByte类型的取值范围-128127的理解

学习C语言的时候对int类型范围理解得不透彻,所以通过网上查询资料,结合大牛的讲解分析了一下byte类型的范围,希望可以帮到大家。 1、知识理解 在计算机内,定点数有3种表示法:原码、反码和补码  [原码]二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。  [反码]表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反

既然选择了远方,便只顾风雨兼程! 1万+

Java byte 类型的取值范围-128127

为什么Java byte 类型的取值范围-128127 : http://blog.163.com/yurong_1987@126/blog/static/47517863200911314245752/ java基本数据类型的取值范围: http://www.cnblogs.com/singlesoar/p/5688915.html 转载于:https://www.cnblogs.co...

weixin_30360497的博客 111
上一篇: 基于Intellij Idea Spring Boot快速创建一个项目
下一篇: #Java基础类型及其封装类#2019.3.19
Carlos_Java
博客等级 码龄9年 1粉丝 19原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值