byte类型取值范围以及溢出详解

byte类型取值范围以及溢出详解例1:publicclasstest{ publicstaticvoidmain(String[]args){ bytea=127; a=(byte)(a+3); System.out.println(a); }}输出-126,为什么呢byte类型的取值范围是-128-127这个输出结果是由java编码方式决定的,Java中正数用原码

大家好,又见面了,我是你们的朋友全栈君。

例1:

public class test {
	public static void main(String[] args) {
		byte a = 127 ;
		a = (byte)(a+3) ;
		System.out.println(a);
	}
}


输出-126,为什么呢
byte类型的取值范围是-128-127
这个输出结果是由java编码方式决定的,Java中正数用原码表示,负数用补码表示,第一位是符号位。
对于127他的编码是:
0000 0000 0000 0000 0000 0000 0111 1111
加上3也就是130,他的编码是:
0000 0000 0000 0000 0000 0000 1000 0010
使用强制转型后,a的编码就变成:
1000 0010
因为java第一位为1的为负数,负数用补码表示,所以要显示原码,要取反加1:
这样就变成 0111 1110
这样就是126加上符号,结果就是-126


例2:

public class test {
	public static void main(String[] args) {
		short a = 128 ;
		byte b = (byte)a ;
		System.out.println(b);
	}
}

输出-128,为什么呢


同上:

a的编码是:

0000 0000 1000 0000

强制转型后变为1000 0000

因为java第一位为1的为负数,负数用补码表示,所以要显示原码,要取反加1:

还是1000 0000

这样就是128加上符号,结果就是-128


例3:

public class test {
	public static void main(String[] args) {
		byte a = (byte)(-129) ;
		System.out.println(a);
	}
}

输出127,为什么呢


同上:

a的补码是:

1000 0000 0000 0000 0000 0000 1000 0001

a的原码是:

0111 1111 1111 1111 1111 1111 0111 1111

强制转换,取后面8个字节,也就是

0111 1111

所以结果是127

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150558.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • send()、sendto()和recv()、recvfrom()的使用

    send()、sendto()和recv()、recvfrom()的使用udp通讯中的sendto()需要在参数里指定接收方的地址/端口,recvfrom()则在参数中存放接收发送方的地址/端口,与之对应的send()和recv()则不需要如此,但是在调用send()之前,需要为套接字指定接收方的地址/端口(这样该函数才知道要把数据发往哪里),在调用recv()之前,可以为套接字指定发送方的地址/端口,这样该函数就只接收指定的发送方的数据,当然若不指定也可,该函数就可以

  • django 用户认证(电视业务认证失败怎么办)

    一般在公司内部都会使用ldap系统进行用户认证。安装pipinstalldjango-auth-ldap主要在settings.py的配置 点击(此处)折叠或打开 #设置后端认证函数,先进行ldap认证后进行数据库认证 AUTHENTICATI…

  • 起步上路「建议收藏」

    起步上路「建议收藏」始于2016-09-11开篇,中间基于工作的内容,记录了几篇相关内容的博客,离上一次发博客(2017-07-24),也过了1年多的时间。这个期间,开始转战人工智能方向,深度学习算法的内容。几经磨难,算是踏入门槛,期间也记录了些许内容。期间也看了各路朋友相关的博客内容,其中不乏精彩之作,为初学者提供了很好的帮助。目前接触和比较熟悉的是目标检测相关的内容,大多基于caffe深度学习框架,博客内容不…

  • UIP协议栈移植到u-boot详解「建议收藏」

    UIP协议栈移植到u-boot详解「建议收藏」UIP协议栈移植到u-boot详解        Author:杨正 date:2014.11.5 Email:y2012ww@gmail.com QQ:12097587561、uip简介      Uip网络是一个简单好用的嵌入式协议栈,易于移植且消耗的内存空间较少,应用于很多嵌入式产品。uIP协议栈去掉了完整的TCP/IP系统中不常用的功能,简化了通讯流程,只保留

    2022年10月20日
  • SSM整合(狂神版)

    SSM整合(狂神版)SSM整合数据库环境环境依赖pom.xml建立基本结构mybatis-config.xmlapplicationContext.xml数据库环境CREATEDATABASE`ssmbuild`;USE`ssmbuild`;DROPTABLEIFEXISTS`books`;CREATETABLE`books`(`bookID`INT(10)NOTNULLAUTO_INCREMENTCOMMENT’书id’,`bookName`VARCHAR(100)NO

  • idea 选中代码生成方法

    idea选中代码生成方法非常好用这边给大家送上显示GIF快捷键:Ctrl+Alt+M觉得本文章对您有帮助,那么可以选择打赏。打赏多少,您高兴就行,谢谢您对我的支持!~(@^_^@)~微信扫一扫…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号