C编程中对于单字节的数据有两种定义:
BYTE 无符号1字节 8位
SBYTE 有符号1字节 8位
而在PB 32位编译器下,只约定了BYTE一种单字节数据类型取值范围 0 ~ 255
那么如何为PB定义一个SBYTE的数据类型呢?
在PB的帮助文档中我们发现有一个隐藏的SBIT位定义符,不留意很难查到。
它的作用就是指定位类型为有符号类型,好了下面我们就可以定义一个新的数据类型SBYTE。
'============================
' 1字节 8位
' 取值范围:
' 11111111 ~ 00000000
' -(2^7) ~ (2^7)-1
' -128 ~ 127
'============================
TYPE SBYTE
b AS SBIT * 8 IN BYTE
END TYPE
下面编程测试下这个新的数据类型:
LOCAL a1 AS SBYTE
LOCAL a2 AS BYTE
a1.b = -125
a2 = -125
MSGBOX "a1.b = "+STR$(a1.b) + $CRLF + _
"a1 = " +STR$(a2)
由测试结果看,新的数据类型已经可以存储有符号byte字型了。
总结:
PB的这个位定义符只能支持BYTE、WORD及DWORD类型,最大支持32位。
只能支持一般的数学运算(加减乘除),不支持位移及其他内置函数。需要自己另行处理。