有人可以向我解释这个功能吗?
具有最低有效n位的掩码设置为1.
例如:
n = 6 - > 0x2F,n = 17 - > 0x1FFFF //我根本得不到这些,尤其是n = 6 - > 0x2F
还有什么是面具?
我正在尝试用Mersenne prime(2 31 -1)作为模数来实现随机数生成器.以下工作代码基于几个相关的帖子:
然而,
它不起作用uint32_t hi, lo;,这意味着我不理解问题的签名与未签名方面.
基于上面的#2,我期待答案是(hi + lo).这意味着,我不明白为什么需要以下声明.
if (x1 > r)
x1 += r + 2;
Run Code Online (Sandbox Code Playgroud)
有人可以澄清我的困惑的来源吗?
代码本身可以改进吗?
发电机应该避免0或2 31 -1作为种子吗?
如何为一个素数(2 p -k)改变代码?
#include <inttypes.h>
// x1 = a*x0 (mod 2^31-1)
int32_t lgc_m(int32_t a, int32_t x)
{
printf("x %"PRId32"\n", x);
if (x == 2147483647){
printf("x1 %"PRId64"\n", 0);
return (0);
}
uint64_t c, r = 1;
c = (uint64_t)a * (uint64_t)x;
if (c < 2147483647){
printf("x1 …Run Code Online (Sandbox Code Playgroud) 有人可以解释这个指令的作用并将其翻译成C吗?
ubfx.w r3, r11, #0xE, #1
Run Code Online (Sandbox Code Playgroud)
根据ARM参考手册,它执行"有符号和无符号位字段提取 ",但我对所有这些按位的东西都不好.