首页 > 作文

java怎么把负数转正数(r语言lag函数用法)

更新时间:2023-04-05 02:48:29 阅读: 评论:0

java基本数据类型的转换

今天我们来讨论一下java中6种基本数据类型的转换。它们分别是:byte,short,int,long,double,float。

记住一点,数据范围小的类型转换成范围大的类型,是不会出现问题的。但是如果是范围大的数据类型往范围小的类型去转换,就可能会出现问题了。我将6种类型的互转分成30种类型,下面我们将这30种类型都实践一下。每种类型的转换,我这里分4种情况,正数的转i belive i can fly换,负数的转换,临界值(最大值和最小值)的转换,边界外的转换,边界内的转换。

byte -> short

// 正数byte a = 1;// 负数byte b = -1;// 最大值byte c = 127;// 最小值byte d = -128;system.out.println((short)a);  // 1system.out.println((short)b); // -1system.out.println((short)c); // 127syste江南影视m.out.println((short)d); // -128system.out.println((short)(c+a)); // 128system.out.println((short)(d+b)); // -129

我们首先看上面的代码块。发现这五种情况的转换,结果都是正确的。这是因为short类型能够表示的范围大于byte类型,所以是不会出现问题。

short -> byte

short a = 1;short b = -1;short c = short.max_value; // 3276礼服设计7short d = short.min_value; // -32768short f = 128;short g = -129;system.out.println((byte)a);  // 1system.out.println((byte)b); // -1system.out.println((byte)c); // -1system.out.println((byte)d); // 0sy国家海洋局第三海洋研究所stem.out.println((byte)(c+a)); // 0system.out.println((byte)(d+b)); // -1system.out.println((byte)f);  // -128system.out.println((byte)g); // 127

我们会发现只有前面两个输出是对的 其他都是错误的。下面我们就来分析一下 为什么会出现这样的情况。

首先来看c(32767)在计算机是怎么存储的。我们都知道计算机存储数据都是按二进制来存储的,因此将c的值转换成二进制就是如图下:

如果是范围大类型转换成范围小的类型,计算机就会采取截取的方式,注意截取是从高位开始的。因为short是2个字节,byte是1个字节,因此被截取之后的结果如下:

提示

截取的时候,计算机是不知道哪一位是用来表示符号位的,因此,截取之后有可能符号位跟截取之前不一致。

截取之后符号位是1。说明截取之后,该数变成了一个负数。在以前的文章里面说过,对于负数,计算机是采用补码的形式进行存储的。那么我们就来推算一下该种数据对应的原码是多少:

最下面的一行就是其对应的原码。所以c的值被强行转换成short之后变成了-1。

下面我们来看一下d(-32768)为什么转成short之后是0?首先我们来看一下计算机是怎么存储这个数的。

读你作文600字-32768转换成二进制是:

从最高位截取,因此就只剩下了8个0,因此转换成10进制就是0。

本文发布于:2023-04-05 02:48:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/87d8ec4f946ffde7e9830b4acd64754a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java怎么把负数转正数(r语言lag函数用法).doc

本文 PDF 下载地址:java怎么把负数转正数(r语言lag函数用法).pdf

标签:转换成   类型   负数   都是
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图