たとえば、データーが性別とかのように2種類しかない場合、
次のようなコーディングは大変な無駄がある。

#N88BASIC
Const NUM = 20
Const MALE = 1
Const FEMALE = 0
Dim s[NUM] As Byte
Dim i As Long
Dim i$ As String
For i=0 To NUM
Input i$
If i$="M" Then s[i] = MALE ELSE s[i] = FEMALE
Next

For i=0 To NUM
If s[i] = MALE Then Print "男" Else Print "女"
Next
このコードでなんの問題も無いと思った人は、
1バイトのうち7ビットは無駄になってしまうことに気づいてほしい。
次のようにすることで、メモリーにムダなくデーターを格納できる。

#N88BASIC
Const NUM =20
Dim s As *Byte
Dim i As Long
Dim i$ As String
s = calloc(1+NUM\8)
For i=0 To NUM
Input i$
If i$="M" Then s[i\8] = s[i\8] Or 2^(i Mod 8) As Long
Next
For i=0 To NUM
If s[i\8] And 2^(i Mod 8) As Long Then Print "男" Else Print "女"
Next

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年02月19日 21:37