[英]How to create a bit array in common lisp?
在谷歌搜索了大約一個小時后,我不得不承認,雖然我找到了很多關於在位 arrays 上運行的函數的文檔,但我找不到關於如何實際創建位數組的單一參考。
現在,在我看來,一些具有其他元素類型的 arrays 可以作為位 arrays 處理,或者可以使用(make-array:element-type (???))
我找不到任何解釋在我寫“???”的地方放什么。
因此,盡管對其他人來說可能很明顯,但我不知道如何創建位數組。 我知道如何編寫一個文字位數組 - 但如果我需要一個位數組,比如 2^16 位 - 我該怎么做?
您使用make-array
是對的,只需使用'bit
作為元素類型。 嘗試(make-array initial-size:element-type 'bit)
。 符號BIT
命名位類型,並且可以用任何其他類型說明符替換以創建一個包含該類型對象的數組。 在此示例中initial-size
只是一個包含整數的變量。
另一種創建位向量的方法:
> (make-sequence '(vector bit) 10)
#*0000000000
還有一個使用#*
閱讀器宏的文字語法,並注意使用make-array
和make-sequence
之間的具體類型可能不同,盡管我不確定性能是否會有所不同...
用 SBCL 測試:
CL-USER> (defvar arr (make-array 10 :element-type 'bit :fill-pointer 0))
ARR
CL-USER> (type-of arr)
(VECTOR T 10)
CL-USER> (defvar arr3 (make-sequence '(vector bit) 10))
ARR3
CL-USER> (type-of arr3)
(SIMPLE-BIT-VECTOR 10)
CL-USER> (type-of #*0101010100)
(SIMPLE-BIT-VECTOR 10)
這個怎么樣:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.