将分数转换为二进制

本文通过实例详细解析了如何将十进制分数转换为二进制表示,并介绍了二进制数位移动对数值的影响。从分数转换到二进制表示的步骤入手,通过具体例子演示了计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

举个例子就啥也知道了!
就拿 29/128 举例子吧!!如果是负数,在转换完的二进制数前面加符号就可以啦。
 

步骤一

把分子和分母都转换为二进制,要表示为2的多少次。
那么分子表示为:24+23+22+20
那么分母呢:27
继续将他们写成分数形式:(24+23+22+20)/27

接下来计算就好了,结果为:2-3+2-4+2-5+2-7

 

步骤二

讲一个小知识点:对于二进制数左移是放大2倍,右移是缩小2倍。
那么对于二进制1,我们右移得到0.1,缩小2倍。所以0.1代表1/2,即2-1。同理,0.01就是1/4,即2-2,以此类推。

有了这个基础,再看看上面的式子,不就是0.001+0.0001+0.000 01+0.000 0001。
用二进制加法计算出最后结果,即0.001 1101。

 
熟练之后其实还是很简单的!!!多多练习。

### Matlab 中十进制二进制的方法 在Matlab中,可以利用`dec2bin`函数来完成十进制到二进制转换。此函数接受一个非负整数作为输入参数并返回其对应的二进制字符串表示形式[^1]。 对于简单的整数转换而言,可以直接调用该函数: ```matlab % 定义要转换的十进制数 decimalNumber = 17; % 使用 dec2bin 函数进行转换 binaryString = dec2bin(decimalNumber); disp(['十进制 ' num2str(decimalNumber) ' 的二进制表示为: ', binaryString]); ``` 如果涉及到带有小数位的十进制数,则情况稍微复杂一点。因为`dec2bin`仅适用于无符号整数,所以需要分别处理整数部分和分数部分再组合起来得到最终的结果[^3]。 下面是一个完整的例子,它展示了如何把既有整数又有小数部分的十进制数化为二进制串: ```matlab function result = dec_to_bin_with_fractional_part(decValue) % 分离整数与小数部分 intPart = floor(abs(decValue)); fracPart = abs(decValue) - intPart; % 处理整数部分 binIntStr = dec2bin(intPart); % 初始化变量用于存储小数部分结果以及精度控制 precision = 8; % 设置想要的小数点后的有效位数 binFracStr = ''; while length(binFracStr)<precision && fracPart>eps fracPart *= 2; currentBit = uint8(fracPart >= 1); binFracStr = [binFracStr, char(currentBit+'0')]; fracPart -= double(currentBit); end % 组合两部分形成完整输出 if ~isempty(binFracStr) result = sprintf('%s.%s', binIntStr, binFracStr); else result = binIntStr; end end % 测试函数 testDecimalWithFraction = 4.625; convertedBinary = dec_to_bin_with_fractional_part(testDecimalWithFraction); fprintf('%.3f 对应的二进制是:%s\n', testDecimalWithFraction, convertedBinary); ``` 上述代码定义了一个名为`dec_to_bin_with_fractional_part`的新函数,它可以接收任意实数类型的十进制值,并将其精确地转换成具有指定小数位长度的二进制字符串。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值