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。我们将在后面讨论变量,但这些示例目前应该不言自明。