格雷码与十进制码的转换

没有用php的位运算,效率会低些,算是完整的反映了转换规则, 基本上就是:格雷码 转成 二进制码 转成 十进制码

十进制码转格雷码

function decimal_to_gray($decimal){
    //$decimal = str_split((string)decdecimal($decimal));
    //先把十进制整形树字转换成二进制码
    $decimal = (string)decbin($decimal);
    $len = 4 - strlen($decimal);
    if($len > 0){
        for($i =0 ;$i< $len; $i++ ){
            $decimal = '0'.$decimal;
        }
    }
    $decimal = str_split($decimal);
    $gray = '';
    foreach($decimal as $k=>$v){
        if($k == 0){
            $gray .= $v;
        }else{
            $gray .= $decimal[$k-1] ^ (int)$v;
        }
    }
    return $gray;
}

格雷码转十进制码

function gary_to_decimal($gray){
    $gray = str_split((string)$gray);
    $decimal = '';
    $prev = 0;
    foreach($gray as $k=>$v){
        if($k == 0){
            $decimal .= $prev = $v;
        }else{
            $decimal .= $prev = (int)$v ^ $prev;
        }
    }
    //将获得的二进制码转换成十进制码
    return bindec($decimal);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容