PHP中的二进制操作问题

PHP中的二进制操作问题,php,bitwise-operators,Php,Bitwise Operators,decbin()将十进制转换为二进制, 同样1或0=1 所以,decbin(0)^decbin(1)应该给我1,但它是什么也不给我。。。。为什么? 但是,如果我在做其他的操作,结果是正确的 decbin(0)| decbin(1)=>1 decbin(0)和decbin(1)=>0 decbin(1)和decbin(1)=>1 Decbin返回一个字符串,并且不在字符串上定义按位运算符 编辑问题后将我的评论编辑到答案中: 未定义意味着它们在字符串上没有意义,也不是说它不会给出一个看似正确的答案。

decbin()十进制转换为二进制, 同样1或0=1

所以,decbin(0)^decbin(1)应该给我1,但它是什么也不给我。。。。为什么?

但是,如果我在做其他的操作,结果是正确的

  • decbin(0)| decbin(1)=>1

  • decbin(0)和decbin(1)=>0

  • decbin(1)和decbin(1)=>1


  • Decbin返回一个字符串,并且不在字符串上定义按位运算符

    编辑问题后将我的评论编辑到答案中:


    未定义意味着它们在字符串上没有意义,也不是说它不会给出一个看似正确的答案。尝试一些其他的价值观,我很确定它不会起作用。你需要做的是对整数进行运算,一旦你完成了所有的计算,就可以用decbin得到字符串表示。有关二进制文字表示,请参见另一个答案。

    Decbin返回一个字符串,并且不在字符串上定义按位运算符

    编辑问题后将我的评论编辑到答案中:


    未定义意味着它们在字符串上没有意义,也不是说它不会给出一个看似正确的答案。尝试一些其他的价值观,我很确定它不会起作用。你需要做的是对整数进行运算,一旦你完成了所有的计算,就可以用decbin得到字符串表示。有关二进制文字表示,请参见另一个答案。

    在PHP 5.4+中,您可以通过
    0b
    前缀使用二进制语法:

    $res = 0b00 ^ 0b01
    
    编辑:结果是正确的。您给出的值将前后转换为字符串,然后再转换为数字。尝试使用较大的数字,它将失败。位运算符不会在字符串上失败(应该如此),因为它们隐式地转换为数字

    您可以始终对普通整数执行该操作,然后仅以二进制显示输出:

    $res = 1 ^ 0;
    echo decbin($res);
    
    这也适用于:

    $res = 15 ^ 7;
    echo decbin($res);
    

    在PHP 5.4+中,您可以通过
    0b
    前缀使用二进制语法:

    $res = 0b00 ^ 0b01
    
    编辑:结果是正确的。您给出的值将前后转换为字符串,然后再转换为数字。尝试使用较大的数字,它将失败。位运算符不会在字符串上失败(应该如此),因为它们隐式地转换为数字

    您可以始终对普通整数执行该操作,然后仅以二进制显示输出:

    $res = 1 ^ 0;
    echo decbin($res);
    
    这也适用于:

    $res = 15 ^ 7;
    echo decbin($res);
    

    但其他二进制运算的答案是正确的。。。只有带xor的prblm!!未定义意味着它们在字符串上没有意义,也不是说它不会给出一个看似正确的答案。尝试一些其他的价值观,我很确定它不会起作用。你需要做的是对整数进行运算,一旦你完成了所有的计算,就可以用decbin得到字符串表示。请参阅二进制文字表示的其他答案。但其他二进制操作的答案是正确的。。。只有带xor的prblm!!未定义意味着它们在字符串上没有意义,也不是说它不会给出一个看似正确的答案。尝试一些其他的价值观,我很确定它不会起作用。你需要做的是对整数进行运算,一旦你完成了所有的计算,就可以用decbin得到字符串表示。请参阅二进制文字表示的另一个答案。