1u16.h(3) Library Functions Manual u16.h(3)
2
3
4
6 u16.h - 16-разрядные слова
7
8
10 #include 'bee2/defs.h'
11 #include 'bee2/core/safe.h'
12
13
14 Макросы
15 #define u16RotHi(w, d) ((u16)((w) << (d) | (w) >> (16 - (d))))
16 Циклический сдвиг u16-слова на d позиций в сторону старших разрядов
17 #define u16RotLo(w, d) ((u16)((w) >> (d) | (w) << (16 - (d))))
18 Циклический сдвиг u16-слова на d позиций в сторону младших разрядов
19
20 Функции
21 u16 u16Rev (register u16 w)
22 Реверс октетов
23 void u16Rev2 (u16 buf[], size_t count)
24 Реверс октетов массива слов
25 size_t u16Weight (register u16 w)
26 Вес
27 bool_t u16Parity (register u16 w)
28 Четность
29 size_t u16CTZ (register u16 w)
30 Число младших нулевых битов
31 size_t u16CLZ (register u16 w)
32 Число старших нулевых битов
33 u16 u16Shuffle (register u16 w)
34 Тасование битов
35 u16 u16Deshuffle (register u16 w)
36 Обратное тасование битов
37 u16 u16NegInv (register u16 w)
38 Аддитивно-мультипликативное обращение
39 void u16From (u16 dest[], const void *src, size_t count)
40 Загрузка из буфера памяти
41 void u16To (void *dest, size_t count, const u16 src[])
42 Выгрузка в буфер памяти
43
45 Реализованы операции над 16-разрядными словами и массивами таких слов.
46
47 Предусловие
48 В функции передаются корректные буферы памяти.
49
51 #define u16RotHi(w, d) ((u16)((w) << (d) | (w) >> (16 - (d))))
52 Предусловие
53 0 < d < 16.
54
55 #define u16RotLo(w, d) ((u16)((w) >> (d) | (w) << (16 - (d))))
56 Предусловие
57 0 < d < 16.
58
60 size_t u16CLZ (register u16 w)
61 Определяется длина серии из нулевых старших битов машинного слова w.
62
63 Возвращает
64 Длина серии.
65
66 Прим.
67 CLZ == Count of Leading Zeros
68
69 Регулярность
70 Имеется ускоренная нерегулярная редакция.
71
72 Аргументы
73 w слово
74
75 size_t u16CTZ (register u16 w)
76 Определяется длина серии из нулевых младших битов u16-слова w.
77
78 Возвращает
79 Длина серии.
80
81 Прим.
82 CTZ == Count of Trailing Zeros
83
84 Регулярность
85 Имеется ускоренная нерегулярная редакция.
86
87 Аргументы
88 w слово
89
90 u16 u16Deshuffle (register u16 w)
91 Четные биты u16-слова w группируются в его младшей половинке, нечетные
92 -- в старшей.
93
94 Возвращает
95 Слово с группированными битами.
96
97 Аргументы
98 w слово
99
100 void u16From (u16 dest[], const void * src, size_t count)
101 Буфер [count]src преобразуется в массив [(count + 1) / 2]dest слов u16.
102
103 Аргументы
104 dest приемник
105 src источник
106 count число октетов
107
108 u16 u16NegInv (register u16 w)
109 Выполняется адиттивное и мультипликативное обращение
110 u16-слова-как-числа w по модулю 2^16.
111
112 Предусловие
113 w -- нечетное.
114
115 Возвращает
116 - w^{-1} \mod 2^16.
117
118 Прим.
119 Вычисляемое слово используется в редукции Монтгомери.
120
121 Аргументы
122 w слово
123
124 bool_t u16Parity (register u16 w)
125 Определяется сумма по модулю 2 битов u16-слова w.
126
127 Возвращает
128 Сумма битов.
129
130 Аргументы
131 w слово
132
133 u16 u16Rev (register u16 w)
134 Выполняется реверс октетов u16-слова w.
135
136 Возвращает
137 Слово с переставленными октетами.
138
139 Аргументы
140 w слово
141
142 void u16Rev2 (u16 buf[], size_t count)
143 Выполняется реверс октетов массива [count]buf из u16-слов.
144
145 Аргументы
146 buf приемник
147 count число элементов
148
149 u16 u16Shuffle (register u16 w)
150 Биты младшей половинки u16-слова w перемещаются в четные позиции, биты
151 старшей половинки -- в нечетные.
152
153 Возвращает
154 Слово с растасованными битами.
155
156 Аргументы
157 w слово
158
159 void u16To (void * dest, size_t count, const u16 src[])
160 Буфер [count]dest формируется по массиву [(count + 1) / 2]src слов u16.
161
162 Аргументы
163 dest приемник
164 count число октетов
165 src источник
166
167 size_t u16Weight (register u16 w)
168 Определяется число ненулевых битов в u16-слове w.
169
170 Возвращает
171 Число ненулевых битов.
172
173 Аргументы
174 w слово
175
177 Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
178
179
180
181Библиотека Bee2 Пт 23 Июн 2023 u16.h(3)