Erlang筆記 二進位制 位元位語法

2021-08-20 13:56:05 字數 868 閱讀 2590

看erlang的語法看到二進位制處理部分覺都很有意思,做個記錄

存在於很多函式式程式語言之中的列表速構的思想,也被擴充套件到了erlang的位元位語法中。位串速構酷似列表速構,只是[…]被換成了<<…>>。

以乙個小整數列表為例,所有整數都在0和7之間,你可以按每個數3位元位將它們打包成位串,如下:「

<< << x:

3>> || x <- [1, 2, 3, 4, 5, 6, 7] >>

列印結果: <<41, 203, 23:5>>
這一步是怎麼獲得的呢,熟悉二進位制就可以很容易推導出來

如果使用二進位制表示[1, 2, 3, 4, 5, 6, 7],而且每個數字只佔3位元位

001 010 011 100 101 110 111
列印的時候預設以8個位元位讀取,然後就可以根據下面來讀取資料

001

01001

| 1 100 101 1 | 10 111

41(00101001)

203(11001011)

23:5(10111)

舉一反三

<< << x:

8>> || << x:

3>> <=

<< 41, 203, 23:

5>> >>

返回資料為<<1, 2, 3, 4, 5, 6, 7>>

「`

[<< x: 8>> || << x: 3>> <= << 41, 203, 23: 5>>]

返回資料為[1, 2, 3, 4, 5, 6, 7]

Erlang腳印 0006 二進位制位串

位串可以寫作 e1,e2.en 其中雙小於號和雙大於號之間可以包含零個或多個區段指示符,位串以位元位為單位的整體長度。區段指示符可以為以下形式之一 data data size data typespecifiers data size typespecifiers typespecifiers 主...

二進位制位運算

與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...

更新二進位制位

問題描述 給出兩個32位的整數n和m,以及兩個二進位制位的位置i和j。寫乙個方法來使得n中的第i到j位等於m m會是n中從第i為開始到第j位的子串 日期 2017 8 22 思路 由於題目的提示中已經給出,i到j有足夠的空間放置m,將n中的第i到j之間的數字全部置為0,最後與m異或即可 includ...