美文网首页
第四章 Caché 函数大全 $BITFIND 函数

第四章 Caché 函数大全 $BITFIND 函数

作者: Cache技术分享 | 来源:发表于2020-08-25 09:05 被阅读0次

    第四章 Caché 函数大全 $BITFIND 函数

    返回指定位值在位串中的位置。

    大纲

    $BITFIND(bitstring,bitvalue,position,direction)
    

    参数

    • bitstring 计算结果为位串的表达式。可以是任何类型的变量,$FACTOR,用户定义的函数或oref.prop.. propi%prop属性引用。
    • bitvalue 要在位串中搜索的值(0或1)。
    • position 可选-开始搜索的位位置,指定为正整数。BIT位置从位串的开头开始从1开始计数。搜索包括此位置。位置值0被视为指定位置1。
    • direction 可选-方向标记。可用值为1和-1。 1 =从位串的开头(或从位置)到结尾(这是默认值)向前(从左到右)搜索。 -1 =从位串的结尾(或从位置)向后搜索。

    描述

    $BITFIND(bitstring,bitvalue)返回指定位值(0或1)在位串位串中首次出现的位置。位位置从1开始计数。

    $BITFIND(bitstring,bitvalue,position)返回在字符串中指定位值的位置处或之后的第一个匹配项的位置。

    如果找不到所需的位值,或者位置(向前搜索)大于位串中的位数,则返回值为0。如果指定的位串是未定义的变量,则返回值为0。指定的位串不是有效的位串,将发出<INVALID BIT STRING>错误。

    示例

    如果bitstring = [0,0,1,1,0],则$BITFIND(bitstring,1)的结果为3:

    /// d ##class(PHA.TEST.Function).BITFIND()
    ClassMethod BITFIND()
    {
        // Set a to [0,0,1,1,0]
        SET $BIT(a,1) = 0
        SET $BIT(a,2) = 0
        SET $BIT(a,3) = 1
        SET $BIT(a,4) = 1
        SET $BIT(a,5) = 0
        // Find first 1 bit within a
        WRITE !,$BITFIND(a,1)
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).BITFIND()
     
    3
    

    如果bitstring = [0,0,1,1,0],则从位置3搜索时,值1的第一位是位位置3(因为搜索包括位置位),而值0的第一位是bit位置5:

    /// d ##class(PHA.TEST.Function).BITFIND1()
    ClassMethod BITFIND1()
    {
        // Set a to [0,0,1,1,0]
        SET $BIT(a,1) = 0
        SET $BIT(a,2) = 0
        SET $BIT(a,3) = 1
        SET $BIT(a,4) = 1
        SET $BIT(a,5) = 0
        // Find first 1 bit from position 3
        WRITE !,"found a 1 at bit position:",$BITFIND(a,1,3)
        // Find first 0 bit from position 3
        WRITE !,"found a 0 at bit position:",$BITFIND(a,0,3)
    }
    
    DHC-APP> d ##class(PHA.TEST.Function).BITFIND1()
     
    found a 1 at bit position:3
    found a 0 at bit position:5
    

    如果bitstring = [0,0,1,1,0],则从位置99向后搜索时,值1的第一位是位4,而值0的第一位是位5:

    /// d ##class(PHA.TEST.Function).BITFIND2()
    ClassMethod BITFIND2()
    {
        // Set a to [0,0,1,1,0]
        SET $BIT(a,1) = 0
        SET $BIT(a,2) = 0
        SET $BIT(a,3) = 1
        SET $BIT(a,4) = 1
        SET $BIT(a,5) = 0
        WRITE !,"found a 1 at bit position:",$BITFIND(a,1,99,-1)
        WRITE !,"found a 0 at bit position:",$BITFIND(a,0,99,-1)
    }
    
    
    DHC-APP>d ##class(PHA.TEST.Function).BITFIND2()
     
    found a 1 at bit position:4
    found a 0 at bit position:5
    

    以下示例返回由$FACTOR生成的随机16位位串中前1位的位置:

    /// d ##class(PHA.TEST.Function).BITFIND3()
    ClassMethod BITFIND3()
    {
        SET x=$RANDOM(65536)
        FOR i=1:1:16 {WRITE $BIT($FACTOR(x),i) }
        WRITE !,"The first 1 bit is at position ",$BITFIND($FACTOR(x),1)
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).BITFIND3()
    1010000100000010
    The first 1 bit is at position 1
    DHC-APP>d ##class(PHA.TEST.Function).BITFIND3()
    0010111110110100
    The first 1 bit is at position 3
    DHC-APP>d ##class(PHA.TEST.Function).BITFIND3()
    0001000000111111
    The first 1 bit is at position 4
    

    相关文章

      网友评论

          本文标题:第四章 Caché 函数大全 $BITFIND 函数

          本文链接:https://www.haomeiwen.com/subject/bcjajktx.html