请问php中$c=(-3)^3; echo $c;会输出多少?为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问php中$c=(-3)^3; echo $c;会输出多少?为啥?相关的知识,希望对你有一定的参考价值。

最i详细越好

php中$c=(-3)^3; echo $c;输出-2.
因为^在php中是异或运算符,也就是说在二进制中1^1=0,0^0=0,1^0=1,0^1=1
我们用一个字节(即八位二进制数)为例:
3表示为二进制数是00000011
3的二进制反码是11111100
3的二进制补码是11111101(是3二进制数00000011的反码加1)
-3表示为二进制数是11111101(是3二进制数00000011的补码)
-3^3表示为二进制数的计算方法是:
00000011 (3)
11111101 (-3)
=11111110 (-2)
所以php中$c=(-3)^3; echo $c;输出-2.
参考技术A (-3)^3 == -2

首先“^”是异或运算符
3 的二进制码:00000000 00000000 00000000 00000011
-3的二进制码:11111111 11111111 11111111 11111101
异或"同0异1" : 11111111 11111111 11111111 11111110 ===>其十进制值为-2
注:计算机中负数以其正值的补码形式表达。
补码=反码+1追问

11111111 11111111 11111111 11111110 请问这个是怎么推算出等于-2的,我就在这里卡住了

追答

二进制的负数转化为十进制:符号位不动,其余全部取反,然后换算成十进制之后+1,最后加负号
参考:http://www.techxu.com/codestudy/binary-decimal.html

本回答被提问者采纳
参考技术B 结果为0,按位运算符(有人称为逻辑异或运算符)相同位取反,不同为取1,因为3是十进制它需转换为二进制并进行运算,最高的一位为符号位可忽略不计,结果就为0追问

请问那我输出的怎么是-2呢?

追答

他是对的,我疏忽了一个重要关键,不要被我误导,二进制在计算时是以补码形式做的,现在仔细听我说3的原码为000011(正数补码为它自己),-3源码为100011,-3补码就变为111101,因此此时开始做计算:000011和111101,记得符号位不在计算范围(在汇编中可以把它当符号位也可以做另一种计算),结果就为11110,最后补码变原码先减一得11101,在取反得10010(因为在这里你把最高位作为符号位),这时就是正确结果-2,这都是基础,上帝啊我竟然犯了这样糊涂的事,抱歉

php中echo的使用方法有哪些?

php中echo的使用:如echo "1234";我看到有的资料上写成这样:echo 1234;

echo '1234';一会双引号 一会单引号 一会不要引号 我被弄晕了 请问好心人这里面到底有什么规则???

echo 是一个语言结构,有无括号均可使用:echo 或 echo()。

显示字符串

下面的例子展示如何用 echo 命令来显示不同的字符串(同时请注意字符串中能包含 HTML 标记):

<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";
echo "我计划学习 PHP!<br>";
echo "这段话", "由", "多个", "字符串", "串接而成。";
?>


下面的例子展示如何用 echo 命令来显示字符串和变量:

<?php
$txt1="Learn PHP";
$txt2="W3School.com.cn";
$cars=array("Volvo","BMW","SAAB");
echo $txt1;
echo "<br>";
echo "Study PHP at $txt2";
echo "<br>";
echo "My car is a $cars[0]";
?>

参考技术A 呵呵。。这是因为整数型的值。可以直接输出。像数字这类都可以不加引号直接输出。。

输出变量也可以不用加任何的引号。直接 echo $a; 即可
要输出字符,就一定要加引号了。比如 echo "你好";

关于单引号和双引号,区别只有一个,单引号里的变量和运算符不会被解释。原样输出。而双引号里的会解释为相应的内容。。例如

$a=1;
echo "$a"; //输出 1 变量被解释了。
echo '$a'; //输出 $a 变量没有被解释。

如果你想把字符和变量一起输出,就要用双引号。如果只是输出纯文本内容,可以使用单引号。。例如:

echo "<font color=red>$a</font>";
echo '<font color=red>你好</font>';本回答被提问者采纳
参考技术B 没有什么规则,个人的编码习惯而已。
类型为数字的可以直接echo 123;当然也可以echo ‘123’或
echo “123”;
类型为纯字符串的echo ‘str’;
类型中含有变量的 :
$str = 'ssss';
①echo "xxxx$str";
输出:xxxxssss
②echo ’xxxx‘.$str;
输出:xxxxssss
③echo ’xxxx$str‘;
输出:xxxx$str
说明:单引号内只认为是字符串,不会识别变量,双引号内,会识别变量。
④echo "xxxx$str=yyy";
输出:xxxxssss=yyy
说明:双引号内是不做运算的。
参考技术C 只是一个标记

php中heredoc的使用方法

1.以<<<End开始标记开始,以End结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。开始标记和开始标记相同,比如常用大写的EOT、EOD、EOF来表示,但是不只限于那几个,只要保证开始标记和结束标记不在正文中出现即可。
2.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在heredoc中,变量不需要用连接符.或,来拼接,如下:$v=2;

$a= <<<EOF //EOF是一种标记,STR、EOD、EOT都行,结束和开始必须一致。

"abc"$v
"123"

EOF;

echo $a;
//结果连同双引号一起输出:"abc"2 "123"3.heredoc常用在输出包含大量HTML语法d文档的时候。
参考技术D 最好加上引号,这个最严谨的写法

以上是关于请问php中$c=(-3)^3; echo $c;会输出多少?为啥?的主要内容,如果未能解决你的问题,请参考以下文章

php基础2

PHP函数

请问一下,知道两个数,随机输出其中一个,用PHP可以做到吗?

php基础:三元运算符及比较3个数的大小

PHP为啥echo 'happy'.1+2.'345'会输出2345

第九篇 - 流程控制