php取反运算值 {echo ~2;}你知道结果是什么吗?

echo ~2;

  请问结果值是多少呢?

答案是  -3

为什么?

首先计算机用补码来存储的,正数的原码、反码、补码都是一样的,

例如:

3的原码、反码、补码都是

00000000 00000000 00000000 00000011

-3的原码   10000000 00000000 00000000 00000011  (第一个是符号位,1表示负数)

-3的反码   11111111  111111111  11111111  11111100  (符号位第一个不变,其他位置取反)

-3的补码   11111111  111111111  11111111  11111101

再来看看之前的问题:

// 2的补码   00000000 000000000 00000000 00000010
// ~运算后   11111111 111111111 11111111 11111101  (其实就-3的补码)
echo ~2; // 输出 -3

// 4的补码   00000000 000000000 00000000 00000100
// ~运算后   11111111 111111111 11111111 11111011  (其实就-5的补码)
//          11111111 111111111 11111111 1111010   (反码)
//          10000000 00000000  00000000 0000101   (原码)
echo ~4;//输出 -5

  

时间: 2024-11-09 05:48:38

php取反运算值 {echo ~2;}你知道结果是什么吗?的相关文章

jquery取选中值

多选 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Conte

九度OJ 1097 取中值

题目1097:取中值 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4379 解决:1188 题目描述: 存在两组数组,和4个数字a,b,c,d,要求做如下操作,将第一个数组第a个数到第b个数,第二个数组的第c个数到第d个数放到一个数组中,求出合并后数组的中间值,如果有两个中间值,取下标较小的那个. 输入: 第一行一个整数t表示有t个测试数据 第二行两个整数,表示两个数组的长度, 接下来两行表示两个数字的值, 最后一行有四个整数a,b,c,d. 数组长度不会超过1000000. 输出

在android的spinner中,实现取VALUE值和TEXT值

为了实现在android的spinner实现取VALUE值和TEXT值,我尝试过好些办法,在网上查的资料,都是说修改适配器,刚开始我也是通过修改适配器的方法来做的,但是如果一个activity有多个spinner,就需要多声明几个适配器的全局变量.后面查看适配器的源码发现,其实没有必要修改适配器,直接往适配器里面传对象,然后重写对象的toString()方法就可以简单解决.闲话少说,贴代码: 先声明一个对象,并重写对象的toString(). public class CItem {     p

UVA 10859 - Placing Lampposts 树形DP、取双优值

                          Placing Lampposts As a part of the mission ‘Beauti?cation of Dhaka City’, the government has decided to replace all theold lampposts with new expensive ones. Since the new ones are quite expensive and the budget is notup to

java中与运算,或运算,异或运算,取反运算

//与运算 &  规则 :都为1时才为1        System.out.println( 7 & 9);        /*         *  7二进制 0111             *  9二进制 1001         * -----------          *        0001   ==1         * */                //或运算 | 规则:有一个为1,则为1        System.out.println(7 | 9);  

Zabbix Server端执行zabbix_get时取到值为空 一例

今天,遇到一个棘手的问题,在zabbix agent端,执行shell脚本获取java进程的信息,可以取到值,但是,在zabbix server端,执行./zabbix_get的脚本获取值为空. 首先,想到可能是zabbix用户在agent端的权限问题,然后在/etc/sudoers加入了zabbix的sudo权限,但是取到的值还是为空. 之后,想到,可能所执行的脚本中,需要在执行的命令,比如jstat之前加上 sudo 命令,但是取到的值还是为空,这时候我已经不淡定了. 后来,请教了公司的运维

《github一天一道算法题》:堆算法接口实现(堆排序、堆插入和堆取最值并删除)

看书.思考.写代码! /********************************************* * [email protected] * blog: http://blog.csdn.net/hustyangju * 题目:堆排序实现,另外实现接口:取堆最大值并删除.堆插入 * 思路:堆是在顺序数组原址上实现的,利用完全二叉树的性质,更具最大堆和最小堆的定义实现的. * 经典应用场景:内存中堆数据管理 * 空间复杂度:堆排序是在原址上实现的,为0 * 时间复杂度:堆排序为O

堆 的取最值删除操作和插入操作

堆的删除 按定义,堆中每次都只能删除第0个数据.为了便于重建堆,实际的操作是将最后一个数据的值赋给根结点,然后再从根结点开始进行一次从上向下的调整.调整时先在左右儿子结点中找最小的,如果父结点比这个最小的子结点还小说明不需要调整了,反之将父结点和它交换后再考虑后面的结点.相当于从根结点将一个数据的"下沉"过程. 堆的插入 每次插入都是将新数据放在数组最后.可以发现从这个新数据的父结点到根结点必然为一个有序的数列,现在的任务是将这个新数据插入到这个有序数据中--这就类似于直接插入排序中将

jmeter从上一个请求使用正则表达式抓取Set-Cookie值,在下一个请求中运用

工作中遇到的问题,登录请求,返回的Response Headers中有个参数Set-Cookie,需要抓取这个参数,运用到下一个请求中,见下图: 通过正则表达式抓取Set-Cookie的值,由于该值存在在Response Headers中,正则需要选择为"信息头": 运用在别的请求中,需要添加一个"HTTP信息头管理器",引用上面抓取的值,见下图: 再次发送请求,Response Headers里也有Set-Cookie值,不会再返回登录超时了. 原文地址:http