You need to enable JavaScript to run this app. 求Matlab/Octave平台支持任意进制的类bitget函数实现
优惠活动
大模型
产品
解决方案
定价
更多

求Matlab/Octave平台支持任意进制的类bitget函数实现

支持任意进制的位提取实现(Matlab/Octave)

覆盖的功能要求

  • 对标原生bitget核心能力,突破原生仅支持二进制位提取的限制,可适配任意进制下的位值获取
  • 支持数值、数值数组批量输入
  • 支持数组形式的位索引逐元素匹配
  • 提供可直接复用的匿名函数实现

核心实现逻辑

位值计算完全遵循数学定义:对目标数值x,在base进制下,索引为bit_index的位(位从最低有效位开始计数,对应权值base^(bit_index-1),与Matlab原生bitget的计数规则完全统一)的取值为mod(floor(x ./ base^(bit_index-1)), base)。

通用函数版本

可直接保存为独立m文件使用,适配Matlab/Octave的隐式广播规则,数组输入无需手动编写循环:

function res = anybasebitget(x, bit_index, base)
    % 任意进制位提取
    % 输入:x - 待处理的数值/数值数组
    %       bit_index - 位索引,从1开始计数(与原生bitget规则一致,1对应最低有效位)
    %       base - 进制基数
    % 输出:res - 对应位置的位值,维度按隐式广播规则自动匹配
    power = base .^ (bit_index - 1);
    res = mod(floor(x ./ power), base);
end

匿名函数版本

依托Matlab/Octave的匿名函数运算能力,可将逻辑压缩为单行表达式,无需单独维护m文件,直接在脚本/命令行调用即可:

anybasebitget = @(x, bit_index, base) mod(floor(x ./ (base .^ (bit_index - 1))), base);

规则对齐提示

该实现与原生bitget的调用规则无额外差异,仅新增了进制基数入参,原有二进制场景的调用逻辑完全兼容,可直接替换。

实际验证用例

  • 二进制场景一致性校验:取x=13(二进制表示为1101),bit_index为[1,2,3,4],base=2,函数返回值为[1,0,1,1],与原生bitget(13,[1,2,3,4])输出完全匹配
  • 任意进制场景校验:取x=123,bit_index为[1,2],base=16,函数返回值为[3,7],对应16进制表示0x73,与手动换算结果一致
  • 数组输入场景校验:取x= [10,20;30,40],bit_index为[1,3;1,3],base=2,函数返回[0,0;0,1],逐元素匹配每个数值对应位置的二进制位值。

内容的提问来源于stack exchange,提问作者Denis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 02:36:05