gpt4 book ai didi

c - 将变量发送到函数并在 C 中修改此变量

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:48 25 4
gpt4 key购买 nike

我有以下变量:

char seed[NBITS + 1], x0[NBITS + 1], y0[NBITS + 1], z0[NBITS + 1], dT0[NBITS + 1];

我想改变这个函数的值:

void lfsr(char *bin, char *output)
{
//bits significativos para fazer o xor NBITS -> NBITS,126,101,99;
int bits[4];
int bit;

if(bin[0] == '0')
bits[0] = 0;
else if(bin[0] == '1')
bits[0] = 1;

if(bin[2] == '0')
bits[1] = 0;
else if(bin[2] == '1')
bits[1] = 1;

if(bin[21] == '0')
bits[2] = 0;
else if(bin[21] == '1')
bits[2] = 1;

if(bin[19] == '0')
bits[3] = 0;
else if(bin[19] == '1')
bits[3] = 1;

bit = bits[0] ^ bits[1] ^ bits[2] ^ bits[3] ^ 1;
//reconstruir o vector de char depois do lfsr
for(int i = 127; i >= 1; i--)
{
bin[i] = bin[i - 1];
}

bin[0] = (char)(48 + bit);
output = bin;
}

例如,我将值从 x 放入 y0 的方式是这样调用 lfsr 函数:

lfsr(x0, y0);

我做错了什么?

我必须从 x0 开始执行 3 个斐波那契线性反馈移位寄存器。

x0 = 10101010101010
y0 = lfsr(101010101010)
z0 = lfsr(y0)
dT0 = lfsr(z0);

结果很好,但是当我执行上面的代码时,如果我使用指针,x0 的值将与 dT0 相同。谁能帮帮我?

谢谢。凹凸!

最佳答案

考虑以下几点:

enter image description here

数字对应于水龙头。这些位实际上是 15..0,从左到右。以下是我对斐波那契线性反馈移位寄存器的实现:

#include <stdio.h>

uint16_t fibLfsr(const uint16_t num)
{
uint16_t tempNum;

tempNum = (num) ^ (num >> 2) ^ (num >> 3) ^ (num >> 5);
tempNum = (tempNum & 0x1) << 15;
tempNum = (tempNum | (num >> 1));

return tempNum;
}

int main(void)
{
uint16_t testNum = 0xACE1;

printf("%#X\n", testNum);
testNum = fibLfsr(testNum);
printf("%#X\n", testNum);

return 0;
}

我不太确定您为什么要使用字符串并将它们转换为二进制。如果这是必要的,您将需要 stdlibstring 中的一些标准库 API,以便在调用 之前将字符串转换为 uint16_t code>fibLfsr() 然后返回到一个字符串。

关于c - 将变量发送到函数并在 C 中修改此变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20694616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com