第189章 ,/.

实际上Byte类型值不仅仅是个数值,它还有另一种值:

布尔值(false|true)

没错,Byte值也是布尔值,这个布尔值一般是数字形式的:

1和0

也有些情况下是true和false。

当为字母形式时,就不用填最后的b了,只需要类似于字符串那样加上引号就可以了(好像不加也可以)。

这就是Byte类型。按理来说一个普通的MC指令教程说到这就可以了,但这本书并不普通。所以接下来我们要研究一个问题:

为什么这个值类型叫做“字节型”呢?

其实答案很简单。刚才的数值范围大家也都知道,是:

-128~127,

也就是-(2?)~2?-1(二的七次幂的相反数到二的七次幂减一的差)

我们的一个字节,也就是:

8bit(8个二进制数字)

字节型数值的绝对值最大值是128,即2?,转换成二进制就是,刚好一字节。

这就是字节型这个名称的由来,是不是灰常简单?

总之,字节型(Byte:B)的特性就是:

1.值为整数或布尔值

2.当值为数值时,数值范围为-128~127

3.当值为数值时,需要在值最后加上类型字母b

4.占用空间只有1字节

(唉,为什么最大值不是,即511?)

(有补码懂不懂?有补码才能区分正负!)

比字节型范围稍大的短整型(Short:S),在上面就有提到其也是有类型字母的。而这个类型字母就是:s,具体这个放在哪里大家都应该知道的。

短整形的数值范围是:

-~「-(21?)~21?-1」(占用2字节)

是不是很熟悉?没错,1.13版本以下附魔的等级值就是短整形,所以当时的附魔最大等级才是。

所以我们可以根据这个附魔的标签来举个例子:

{ench:[{lvl:s,id:18s}]}——这就是短整形的最大值,也就是附魔等级的最大值

{ench:[{lvl:-s,id:18s}]}——这就是短整形的最小值,也是附魔等级的理论最小值(LV.-?)

(细心的朋友可能注意到了,1.13以前的id其值也是短整形)

到了1.13以后,情况就不一样了。Mojang把lvl值类型改成了int整形,附魔的上限也就升级到了。但实际上,在新版本,lvl其值是int和Short混用的。具体是这样的:

用附魔台附魔或战利品表生成的,是Short短整形,但是读取时是按照int整形的时候来读取的。其他的就直接是int了。

只不过这些东西,我们以后再说。现在回到正题。

Short的内容就是这么多。总的来说,Short短整形的特性就是:

1.值范围是-~(整数)

2.类型字母为s

3.占用空间2字节

OK NBT标签的内容就暂且到这里了,我们下一章再见。

(补码是什么啊?)

(简单来说,这八位的第一位是表示正负号,0为正,1为负。所以负值最小可以到-128即,正值最大可以到127即0。)

(哦懂了懂了)

(不光byte有补码,Minecraft的十四种NBT数据类型中,除了字符串、复合标签、列表这三样,其他都有补码)

(对了,byte作为布尔值时是没有补码的。实际上在Java语言中,byte数值没有布尔值这个用途,表示布尔值的是一个叫boolean的数据类型,Minecraft的NBT中Mojang把boolean的功能合并到了byte中,所以这就是为什么byte还有一个挺突兀的布尔值功能)