- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
void shuffle_words(WORD_TYPE* _state)
{
WORD_TYPE temp[DATA_SIZE];
temp[7] = _state[0];
temp[12] = _state[1];
temp[14] = _state[2];
temp[9] = _state[3];
temp[2] = _state[4];
temp[1] = _state[5];
temp[5] = _state[6];
temp[15] = _state[7];
temp[11] = _state[8];
temp[6] = _state[9];
temp[13] = _state[10];
temp[0] = _state[11];
temp[4] = _state[12];
temp[8] = _state[13];
temp[10] = _state[14];
temp[3] = _state[15];
memcpy_s(_state, temp, DATA_SIZE * WORD_SIZE);
}
int prp(WORD_TYPE* data, WORD_TYPE key)
{
shuffle_words(data);
key = round_function<14, 15>(data, key);
key = round_function<13, 14>(data, key);
key = round_function<12, 13>(data, key);
key = round_function<11, 12>(data, key);
key = round_function<10, 11>(data, key);
key = round_function<9, 10>(data, key);
key = round_function<8, 9>(data, key);
key = round_function<7, 8>(data, key);
key = round_function<6, 7>(data, key);
key = round_function<5, 6>(data, key);
key = round_function<4, 5>(data, key);
key = round_function<3, 4>(data, key);
key = round_function<2, 3>(data, key);
key = round_function<1, 2>(data, key);
key = round_function<0, 1>(data, key);
key = round_function<15, 0>(data, key);
return key;
}
我想知道是否有更快的方法来执行 shuffle_words 操作。我看到过有关矩阵转置的问题,但这些问题似乎集中在矩阵较大或多维的情况下。
我的数组大小始终为 16 个字,prp 函数将在同一个数组上多次应用,一个接一个。这让我相信简单地访问转置顺序中的元素而不实际转置它们是一种选择。
round_function 已经将数据写入数组,如果将 shuffle 移动到数组中会更有效,那也是可以接受的。这是相关代码,以备不时之需:
template <int left_index, int right_index>
WORD_TYPE round_function(WORD_TYPE* state, WORD_TYPE key)
{
WORD_TYPE left, right;
left = state[left_index];
right = state[right_index];
key ^= right;
right = rotate_left<ROTATION_AMOUNT>(right + key + left_index);
key ^= right;
key ^= left;
left += right >> (BIT_WIDTH / 2);
left ^= rotate_left<(left_index % BIT_WIDTH) ^ ROTATION_AMOUNT>(right);
key ^= left;
state[left_index] = left;
state[right_index] = right;
return key;
}
我想过为 round_function 提供目标索引,但这样做会覆盖尚未操作的字节,从而破坏目标索引处的数据。
执行单词转置步骤的最有效方法是什么?是否可以在没有临时存储和memcpy
的情况下高效地执行 shuffle_words?如果我保持原样,编译器会为我优化它吗?
编辑:
对于 16 个空词的示例输入,我得到以下输出:
5390936987981438580
7289498000187791405
11630888819098945478
4862561973623181657
11364775727483781365
1302861686580238483
10934483497681452460
376472396741801
17443576244438476890
17213444377027086447
15287741771379858051
16772715748200046576
6216997191100954620
16389751604649919423
2033403819063771136
14517213842436349075
我使用了这些#defines:
#define ROTATION_AMOUNT 41
#define BIT_WIDTH 64
#define DATA_SIZE 16
typedef unsigned long long WORD_TYPE;
如果可以提高效率,我可以稍微修改功能。
最佳答案
是的!
void shuffle_words(WORD_TYPE* _state) {
WORD_TYPE temp = _state[0];
_state[0] = _state[11];
_state[11] = _state[8];
_state[8] = _state[13];
_state[13] = _state[10];
_state[10] = _state[14];
_state[14] = _state[2];
_state[2] = _state[4];
_state[4] = _state[12];
_state[12] = _state[1];
_state[1] = _state[5];
_state[5] = _state[6];
_state[6] = _state[9];
_state[9] = _state[3];
_state[3] = _state[15];
_state[15] = _state[7];
_state[7] = temp;
}
关于c++ - 转置 16 字数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38645777/
嗨,我是excel的初学者,所以请原谅我的无知。 最近我发现自己需要一个函数来计算一系列单元格中的单词数(当然,将空单元格计为 0)。 在网上冲浪我发现了这个简单的 VBA 代码: Function
我是编程新手,这段代码不想工作,而且我已经没有想法了。它可以很好地读取文件,但不会计算任何内容。我知道它与 while 语句有关。这是针对两个单独的文件,但它们都需要显示在末尾。 #define _C
我用 Java 实现了一个字数统计程序。基本上,该程序需要一个大文件(在我的测试中,我使用了一个仅包含数字的 10 GB 数据文件),并计算每个“单词”出现的次数 - 在这种情况下,一个数字(例如 2
长话短说:1986 年,一位面试官要求 Donald Knuth 编写一个程序,输入文本和数字 N,并列出按频率排序的 N 个最常用的词。 Knuth 编写了一个 10 页的 Pascal 程序,Do
我有一个包含 2 个字段的表: cnt str -- ------- 60 the 58 of 4 no 30 the 2 of 1 no 我想要这样的结果 cnt
各位seoer应该都明白,要想网站有排名,收录是前提条件,没有收录完全谈不上排名、流量。但是内页的收录往往是seo最大的难题之一,笔者手上有一堆网站都是只被收录了首页或者几页内页,因此解决内页收录问
是否可以设置一个 checkstyle 规则来计算评论中的字数,然后在字数低于定义的限制时显示问题。我在checkstyle上搜索了Javadoc属性,但没有发现有用的东西。 例如: /** * S
我有一个名为“input.txt”的文本文件,其中包含: test line one test line two final line 编译并运行后通过 $ ./a.exe #include
我目前在带有 pandas 0.23.4 的 Jupyter Notebook (v5.6.0) 中使用 python3.7。 我编写了代码来标记一些日语单词,并成功应用了一个字数统计函数,该函数返回
我刚刚用出色的 Redactor 替换了 CKEditor(它伴随着大量与 AJAX 更新 DOM 相关的神秘问题) .我们以前使用 CKEditor 插件为我们提供富文本编辑器的字符数。我怎样才能用
我想在 Eclipse 集群上运行 hadoop 字数统计。但我收到错误。我更改了输出目录,但程序行为没有变化。你能帮我解决这个错误吗: 2013-10-23 23:06:13,783 WA
我正在尝试运行一个 wordcount 程序,但我收到以下代码的错误 job.setInputFormatClass(TextInputFormat.class); job.setOutputForm
这是 Hadoop 字数统计 java map 和 reduce 源代码: 在 map 函数中,我已经可以输出所有以字母“c”开头的单词以及该单词出现的总次数,但我想做的只是输出以字母“c”开头的单词
我是一名优秀的程序员,十分优秀!