浮点数通常以十进制表示法给出,例如: 1.25。但是对于二进制,相同的值可能是1.01。
可以使用这种二进制表示法在MATLAB中指定浮点值吗?
答案 0 :(得分:1)
正如@Ander Biguri所说,这不是浮点(IEEE-754 double see here)。
但是,如果您想以您在问题中建议的方式表示二进制文件,则可以执行以下示例。在我的示例中,您必须指定要表示二进制整数和位数的位数。小数部分,它作为字符数组输出:
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