【问题标题】:How do fix loadbyte function in C?如何在 C 中修复 loadbyte 函数?
【发布时间】:2022-11-13 12:19:08
【问题描述】:

我是 C 新手,我做了一个 loadbyte 函数,它应该从特定内存位置的 32 位字返回一个字节。

#include <stdint.h>;
#define MEM_SIZE 4096
int32_t mem[MEM_SIZE];

union uniao{
    int32_t word;
    int8_t bytes[4];
};

int32_t lb(uint32_t address, int32_t kte){

    union uniao memory;

    int32_t endereco = address + kte;

    int32_t index = endereco / 4;

    memory.word = mem[index];

    return memory.bytes[endereco % 4];
};

问题是,例如,如果mem[1] = fcfdfeff 和我调用lb(4,0),它返回ffffffff 而不是000000ff(字节ff 和其他槽填充为0)。我该如何解决?

【问题讨论】:

  • 使用无符号类型?

标签: c riscv


【解决方案1】:
  1. 0xff 转换后的int8_t-1
  2. -1 分配给 inte32_t 变成 -1
  3. int32_t -1 转换为无符号为 0xffffffff

    假设:二进制补码有符号数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2019-01-10
    • 2021-06-26
    • 2021-10-04
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多