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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 带通滤波器幅频特性曲线图_滤波器知识,你所要的,都在这里

    带通滤波器幅频特性曲线图_滤波器知识,你所要的,都在这里滤波器是一种选频装置,可以使信号中特定的频率成分通过,而极大地衰减其它频率成分。一、概述1、定义凡是可以使信号中特定的频率成分通过,而极大地衰减或抑制其他频率成分的装置或系统都称之为滤波器,相当于频率“筛子”。2、分类频率通带:能通过滤波器的频率范围。频率阻带:被滤波器抑制或极大地衰减的信号频率范围。截止频率:通带与阻带的交界点。2)按物理原理分:机械式、电路式;按处理信号分:模拟、数字3、滤波…

    2022年6月1日
    121
  • 在javascript中实现freameset 框架页面的跳转

    在javascript中实现freameset 框架页面的跳转对于框架的跳转可以为: 1:window.parent.frames[“需要修改的框架”].location.href(“跳转的路径”); 2:window.parent.frames.item(框架在框架集数组中存放的位置).location.href(“跳转的路径”); 3:window.parent.frames.item(“需要修改的框架此为框架名称”).location.h

    2022年7月20日
    23
  • java 上传文件接口_Java接口实现文件上传

    java 上传文件接口_Java接口实现文件上传因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。需求实现文件上传,并提供一个可供下载的路径。想法文件上传代码暂且不谈,先说说文件放在服务器什么位置比较合适。我首先想到的是两个地方:tomcat的webapps/ROOT目录下,如果放在这个目录下,数量少了还好,一旦数量多了,必定会影响tomcat本身的运行速度。这个虽然可用但不可…

    2022年5月14日
    43
  • openGL ES美颜滤镜之美白,磨皮,红润[通俗易懂]

    openGL ES美颜滤镜之美白,磨皮,红润[通俗易懂]下面是滤镜源码:importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.opengl.GLES20;importandroid.opengl.GLSurfaceView;importandroid.opengl.Matrix;importandroid.view.WindowManager;importcom.ws.gl.o

    2022年7月22日
    10
  • 2021最强Python学习教程,从零基础入门到精通

    2021最强Python学习教程,从零基础入门到精通你准备好了吗???areyouready???前言01.python介绍02.项目开发完整流程(详解版)03.项目开发流程(精简版)第一篇计算机核心基础01计算机组成原理第二篇编程语言01编程语言介绍第三篇python入门01python介绍及IDE集成开发环境02python是解释型的强类型动态语言03python语法之变量、常量04python语法之注释05python垃圾回收机制GC06Python语法入门之基本数据类型07Python语法

    2022年9月19日
    3
  • python 获取图片大小_python用户输入矩形的长和宽

    python 获取图片大小_python用户输入矩形的长和宽#coding:utf8fromPILimportImageimg=Image.open(“img.jpg”)printimg.sizeprintimg.format

    2025年8月27日
    8

发表回复

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

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