跳至内容

PBASIC 编程/数据类型

来自维基教科书,开放书籍,构建开放世界

二进制数

[编辑 | 编辑源代码]

当我们想到日常使用的数字时,我们想到的是十进制数字。这意味着我们可以使用 10 个不同的数字:0、1、2、3、4、5、6、7、8 和 9。使用这 10 个数字和 10 的幂,我们可以创建系统中的任何数字

二进制或“二进制”系统中,我们只有两个数字:0 和 1。为了在二进制中生成一个数字,我们使用 2 的幂而不是 10 的幂

在讨论不同系统中的数字时,通常使用下标。下标 10 表示数字为十进制,下标 2 表示数字为二进制。例如

常用数据类型

[编辑 | 编辑源代码]

计算机非常有限,它们存储数字的空间是固定的。这意味着有固定数量的位可用,不多也不少。某些大小的数字非常常见,因此它们有特殊的名称。

比特是一个二进制数字,要么是 0 要么是 1。

字节是 4 个比特,可以包含 0 到 15 的值。

字节是 8 个比特(2 个字节),可以包含 0 到 255 的值。

是 16 个比特长(2 个字节或 4 个字节),可以包含 0 到 65535 的值。

可用存储空间

[编辑 | 编辑源代码]

BASIC Stamp 有 128 个字节(64 个字)的数据存储空间,你的程序可以将其用作变量。我们将在后面讨论变量。

使用计算机数字时,存在一些限制。

为了同时支持正数和负数,PBASIC 需要“窃取”数字中的一个比特来表示符号。因此,我们所有数据类型的范围都会变小

比特
比特不能有符号。
字节
带符号的字节可以从 -8 到 7
字节
带符号的字节可以从 -128 到 127
带符号的字可以从 -32768 到 32767

负数以一种称为二进制补码的特殊方式存储。我们这里不会讨论这个。

一些计算机能够处理分数,称为“浮点数”。但是,BASIC Stamp 不能处理分数。这意味着每当我们尝试使用分数时,BASIC Stamp 都会始终向下取整。这意味着数字 1.9 在 BASIC Stamp 内部会变成 1。有些人可能觉得奇怪

但是,在计算机中,这是很常见的。

数据类型具有固定宽度,它们无法保存过大的数字。如果我们尝试将过大的数字存储在变量中,最上面的比特将被“截断”。如果我们谈论的是字节,我们可以写

这称为溢出,是我们在进行算术运算时需要注意的。如果字节或字节太小,我们总是可以使用字来代替。但是,如果我们想存储一个大于 65535 的数字,那么我们就遇到了麻烦!

编写数字

[编辑 | 编辑源代码]

程序员可能希望用多种方式指定数字:二进制、十进制或十六进制。十六进制(我们将在本书中不讨论)是另一个使用 16 为基数的有用数字系统。

要写入十进制数,我们只需编写不带前缀的数字,例如: "99"。如果我们要写入二进制数,我们使用 "%" 前缀,例如: "%110011"。要写入十六进制,我们将使用 "$" 前缀,如下所示: "$AF99"。

在计算机中,所有内容都以二进制形式存储。这意味着即使不是数字的东西,比如字母或其他字符,也是使用二进制数存储的。有一个特殊的代码将每个字符分配给一个特殊的二进制模式,称为 **ASCII**。要以 ASCII 形式写入字母,我们使用双引号,例如

MyVariable = "A"

请注意,数字和该数字的 ASCII 码并不相同。

MyVariable = 1
MyVariable = "1"

这两个不相同!然而,ASCII 有一个特殊的属性,所有字符和数字都按从低到高的顺序排列,因此在某些情况下我们可以对 ASCII 字符进行数学运算。

MyVariable = "A" + 1

现在 MyVariable 等于 "B"!此外,我们可以通过使用一个简单的关系将数字转换为常规的二进制数。

MyVariable = "1" - "0"

现在 MyVariable 等于二进制数 1。我们将在后面讨论变量,但这些示例目前应该不言自明。

华夏公益教科书