如何在C代码(256->;4)中将带小数点的有符号数字解释为实际值
我有一个从vhdl代码输入到用C语言编程的Nios系统的输入 在vhdl中如何在C代码(256->;4)中将带小数点的有符号数字解释为实际值,c,floating-point,vhdl,C,Floating Point,Vhdl,我有一个从vhdl代码输入到用C语言编程的Nios系统的输入 在vhdl中 signal input : ufixed(9 downto -6); 当我把这个输入输入到C编译器中时,在终端窗口中,它被显示出来 input = 256 在vhdl中,输入被声明为有10个小数点和6个小数点。所以 二进制输入应如下所示:000000010000000(相当于十进制的256) 我应该怎么做才能在C代码中将“输入”解释为值4 我想要整数和小数部分,例如,如果输入是00000001000000,
signal input : ufixed(9 downto -6);
当我把这个输入输入到C编译器中时,在终端窗口中,它被显示出来
input = 256
在vhdl中,输入被声明为有10个小数点和6个小数点。所以
二进制输入应如下所示:000000010000000
(相当于十进制的256
)
我应该怎么做才能在C代码中将“输入”解释为值4
我想要整数和小数部分,例如,如果输入是
00000001000000
,我想要在C代码中得到4.5
的值,假设你在无符号int
变量中得到值,并且只关心整数部分,一种快速的方法是
n
位计算的变量值(您知道,小数部分)假设您得到的是
无符号int
变量中的值,并且只关心整数部分,一种快速方法是
n
位计算的变量值(您知道,小数部分)在C代码中,您只需除以比例因子即可得到等效值:
float f = (float)input / (1 << 6); // divide by 2^6 = 64
在C代码中,您只需除以比例因子即可得到等效值:
float f = (float)input / (1 << 6); // divide by 2^6 = 64
那是十进制的。所以除以1e(x),而不是移位。另外:移位将丢弃分数部分。@Olaf My Bad,我认为只需要整数部分。将更新为十进制。所以除以1e(x),而不是移位。另外:移位将丢弃分数部分。@Olaf My Bad,我认为只需要整数部分。将更新
输入>>6
将为您提供整数部分。您没有提供足够的线索让我们猜测您想对小数部分做什么。input>>6
将为您提供整数部分。你没有给我们足够的线索来猜测你想对分数部分做什么。