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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 仿射函数_仿射空间

    仿射函数_仿射空间今天看书用到仿射函数,不明白,上网查资料,貌似网上这方面资料也不是很多,有的也是讨论性质,不太准确。找到一些英文资料,现总结如下:线性(linear)定义:1:原空间内:如果在原空间内f(x+y

    2022年8月6日
    5
  • 【rqnoj】 1 明明的随机数[通俗易懂]

    【rqnoj】 1 明明的随机数[通俗易懂]RQNOJ1明明的随机数

    2022年7月2日
    21
  • 最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解[通俗易懂]

    最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解[通俗易懂]说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!一.叙述1.Git简介Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。2.首先要去GitHub官网注册一个账号详细教程:https://b…

    2022年5月24日
    47
  • 移动端避免使用100vh[通俗易懂]

    移动端避免使用100vh[通俗易懂]CSS中的视口单位听起来很棒。如果要设置元素的样式以占据整个屏幕的高度,则可以设置height:100vh,您拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可悲的是,事实并…

    2022年6月9日
    67
  • 游戏数值策划

    游戏数值策划游戏数值-拆解方法篇大家好,我是Alice,一名喜欢捣腾数字的游戏数值策划12345~o(* ̄▽ ̄*)ブ工作中我会经常拆解游戏数值,通过数值理解市面上优秀游戏的设计思路。今天想在这里跟大家分享一下我研究游戏数值的流程。如果各位有什么好方法,也请在评论区留言,期待看到你的想法。我平时拆解数值的流程主要分为六个阶段:准备阶段 数据收集 分析数据规律 提出猜想 根据数据验证猜想 拆解的应用不过在介绍具体流程之前,我想和你们先聊一下,数值拆解的目的。我认为数值拆解的目的大概可以分

    2022年5月5日
    47
  • VSCode 配置Java环境「建议收藏」

    VSCode 配置Java环境「建议收藏」VSCode配置Java环境闲话少说,开始配置挚爱的VSCode!!!第一步,安装VScode小插件第二步,简单写个测试代码然后进入setting.json替换以下代码第三步,配置launch.json好了,到此完成,希望能帮到大家!!!有问题可以留言共同探讨哦!!![点击这里转到Wondows配置java环境,配置完之后再到这个文章看VSCode配置](https://blog.c…

    2022年5月23日
    229

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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