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