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

byte取值范围的计算和溢出取值的计算:

  1. 首先看一下byte类型在java.lang包下的源码,源码指定了byte类型的最大值和最小值。
    在这里插入图片描述
    2.在计算机内存存放的数值都是补码形式,第一位为符号位(可以百度补码概念),对应的取值如下:

负整数转换成二进制

        方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42,如图4所示为方法解释。最后即为:(-42)10=(11010110)2.

二进制如何转十进制,十进制如何转二进制

 

补码原码十进制备注
0111 11110111 1111127正数最大值
0000 00010000 00011正数最小值
1111 11111000 0001-1负数最大值
1000 00011111 1111-128负数最小值
  1. 综上可得byte类型的取值范围为-128~127
  2. 而当发生溢出时,例如:

在这里插入图片描述 

 

 首先byte b = 127,进行了++b操作之后,变成了128,127二进制表示为:0111 1111,+1后:1000 0000,因为计算机的数值都是补码形式表示,所以1000 0000为补码,

因为第一位为1,所以其为负数,进行取反:0111 1111,加1得到1000 0000,2的7次方=128

即数值为128,又因为其为负数,所以值为-128。

综上所述:溢出后的128的实际值为-128。下面再举个例子验证一下:

 在这里插入图片描述

127二进制补码为:0111 1111,进行累加操作之后,

0111 1111

+1

1000 0000

+1

1000 0001

变为129
129的原码和补码为 1000 0001
首位为1,其为负数,将补码取反加一得到0111 1111
数值为127加上符号位,结果为-127 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java基本数据类型的课件内容: ## Java基本数据类型 Java数据类型分为两类:基本数据类型和引用数据类型。 ### 基本数据类型 Java基本数据类型有8种,分别是: - byte:1字节,取值范围为-128~127 - short:2字节,取值范围为-32768~32767 - int:4字节,取值范围为-2147483648~2147483647 - long:8字节,取值范围为-9223372036854775808~9223372036854775807 - float:4字节,取值范围为1.4E-45~3.4028235E38 - double:8字节,取值范围为4.9E-324~1.7976931348623157E308 - char:2字节,取值范围为0~65535 - boolean:1位,取值范围为true或false ### 引用数据类型 Java的引用数据类型包括类、接口、数组等。 ## 基本数据类型的使用 在Java,可以使用变量来存储基本数据类型的值。变量的声明格式为: ``` 数据类型 变量名 = 初始值; ``` 例如,声明一个整型变量并赋初值为10: ```java int num = 10; ``` 在Java,还可以使用字面量来表示基本数据类型的值。例如,整型字面量可以表示为: ```java int num1 = 10; // 十进制 int num2 = 0b1010; // 二进制 int num3 = 012; // 八进制 int num4 = 0xA; // 十六进制 ``` 其,0b表示二进制,0表示八进制,0x表示十六进制。 ## 类型转换 在Java,不同类型的数据之间可以进行转换。类型转换分为自动类型转换和强制类型转换。 ### 自动类型转换 当数据类型从小范围向大范围转换时,Java会自动进行类型转换。例如,将一个整型值赋给一个浮点型变量时,Java会自动将整型值转换为浮点型。 ```java int num = 10; float f = num; // 自动类型转换 ``` ### 强制类型转换 当数据类型从大范围向小范围转换时,Java需要进行强制类型转换。强制类型转换需要使用括号将目标类型括起来,并放在需要转换的变量前面。 ```java float f = 10.5f; int num = (int)f; // 强制类型转换 ``` 需要注意的是,强制类型转换可能会导致精度丢失或溢出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值