Matlab 如何使用二进制表示法而不是十进制来编写浮点?

Matlab 如何使用二进制表示法而不是十进制来编写浮点?,matlab,Matlab,浮点数通常采用十进制表示法,例如1.25。但是,对于二进制,相同的值可能为1.01 可以使用这种二进制表示法在MATLAB中指定浮点值?,正如@Ander Biguri所说,这不是浮点() 然而,如果你想用你在问题中建议的方式来表示二进制,你可以做下面的例子。在我的示例中,您必须指定要表示二进制整数和小数部分的位数,并将其输出为字符数组: num2Convert = 1.25; numInt = 5; %Number of bits for interger portion numFrac =

浮点数通常采用十进制表示法,例如1.25。但是,对于二进制,相同的值可能为1.01


可以使用这种二进制表示法在MATLAB中指定浮点值?

,正如@Ander Biguri所说,这不是浮点()

然而,如果你想用你在问题中建议的方式来表示二进制,你可以做下面的例子。在我的示例中,您必须指定要表示二进制整数和小数部分的位数,并将其输出为字符数组:

num2Convert = 1.25;
numInt  = 5; %Number of bits for interger portion
numFrac = 5; %Number of bits for fraction portion
dInt  = num2cell(fix(rem(num2Convert*pow2(-numInt+1:0),2)));
% More simply you could just do dec2bin(fix(num2convert)); for the int portion...
% but I wanted to be consistent with the fractional portion
dFrac = num2cell(fix(rem( rem(num2Convert,1)*pow2(1:numFrac),2)));
binString = [sprintf('%d',dInt{:}),'.',sprintf('%d',dFrac{:})]

binString =
00001.01000
现在,如果您想查看底层双精度浮点的二进制表示,可以执行以下操作:

binString  = dec2bin(typecast(num2Convert,'uint64'),64)

binString  =
0011111111110100000000000000000000000000000000000000000000000000

这根本不是二进制浮点的工作方式。你在看定点算术,好像你在找
num2hex
函数。@AnderBiguri:为什么实数(float)只能用十进制表示法,而不能用二进制表示法?如果十进制表示法中的浮点数为1.25是有效的,那么二进制表示法中的浮点数应与1.01(例如0b1.01)或十六进制表示法(例如1.4)中的浮点数相同有效,例如0x1.4。可能是不同的程序不支持它,但从不同基的整数表示法扩展到不同基的浮点表示法是显而易见的。我认为您只是混淆了@AnderBiguri所指的术语。“浮动”通常指IEEE-754表示。你所要求的是“定点”而不是“浮动”。听起来Matlab的定点设计器工具箱可能有用。我没有这方面的许可证,所以不能在那里提供任何帮助。。。我只是想把它传过去。“定点设计器”™ 提供用于开发定点和单精度算法以优化嵌入式硬件性能的数据类型和工具。”