scala整型范围详细

目录

一、scala中的整形类型

二、关于原码、反码、补码

三、计算机运算

四、为什么byte类型的范围是-128到127呢

五、实例


一、scala中的整形类型

分为:Byte,Short,Int,Long,如下图:

数据类型

描述

Byte[1]

8 位有符号补码整数,数据值范围为-128到127

Short[2]

16 位有符号补码整数,数据值范围为-32768到32767

Int[4]

32 位有符号补码整数,数据值范围为-2147483648-2147483647

Long[8]

64 位有符号补码整数,数据值范围为-9223372036854775808到9223372036854775807 2的64次方-1

二、关于原码、反码、补码

原码:一个数在计算机中的二进制形式,最高位表示符号位,1 表示 负,0 表示 正

[ 1 ]原 = 0000 0001

[ -1 ]原 = 1000 0001

反码:正数的反码与原码相同,负数的反码是在原码的基础上,符号位不变,其它各位取反(1 变 0,0 变 1)

[ 1 ]反 = 0000 0001

[ -1 ]反 = 1111 1110

补码:正数的补码与原码相同,负数的补码:反码 + 1

[ 1 ]补 = 0000 0001

[ -1 ]补 = 1111 1111

三、计算机运算

计算机内部采用补码的方式存储有符号的数据,采用补码的方式进行运算

原码运算:

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [1000 0010]原 = -2

补码计算:

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]反 + [1111 1110]反 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补 = 0

四、为什么byte类型的范围是-128到127呢

因为是有符号型的,所以第一位表示正负,后面7位表示数据,按照正常表示是-127到127

但是比如0

正0表示 0000 0000

负0表示 1 000 0000 反码:1111 1111 补码:反码+1 1000 0000

有两个0

所以1 000 0000 就表示-128 -128只有补码,没有原码和反码

其实这也是根据计算机内部运算计算而来的

比如-127 原码表示:1 111 1111 补码:取反+1 则为:1 000 0001 那么 -127-1 = -128 则为:1000 0000 符合计算规则。

再比如-126 原码表示:1 111 1110 补码:取反+1 后为 1 000 0010 -127+1 就是-126

五、实例

1、1+127 等于多少呢?

原码0000 0001 +原码011111111 = 补码 0000 0001+补码 0111 1111 = 1000 0000 = -128

代码运行下:

var b:Byte = 127
var c:Byte=(b+1).toByte
println(c)
结果:-128

2、Int 130转换为Byte等于多少呢?

var m:Int = 130
println(m.toByte)

计算机底层是按照字节保存有符号,底层是补码,强制转码,直接截取

我们首先分析Int 128 转换为Byte是多少呢

Int 128原码:0000 0000 0000 0000 0000 0000 1000 000

补码:0000 0000 0000 0000 0000 0000 1000 000

截取最后一个字节:

1000 000

取反+1

补码:10000 0000

结果是-128

再看看130

原码: 000000000 000000000 000000000 1 0000010

补码:000000000 000000000 000000000 1 0000010

补码:10000 0010

有两种方式;

1、可以看出1000 0000+2=1000 0010 也就是-128+2=-126

2、原码:取反+1 11111101 +1 = 11111110

所以结果是-126

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值