对于有符号的而言:
   ①二进制的最高位是符号位: 0表示正数,1表示负数
   ②正数的原码,反码,补码都一样
   ③负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
   ④负数的补码=它的反码+1
   ⑤0的反码,补码都是0
   ⑥php没有无符号数,换言之,php中的数都是有符号的
   ⑦在计算机运算的时候,都是以补码的方式来运算的.

php中有4个位运算,分别是”按位与&、按位或|、按位异或^,按
位取反~”,它们的运算规则是:
   按位与& : 两位全为1,结果为1
   按位或|  :   两位有一个为1,结果为1
   按位异或 ^ : 两位一个为0,一个为1,结果为1
   按位取反 :   0->1 ,1->0

练习题:
一、       ~-5=?

a.   先找-5的原码     10000000  00000000  00000000  00000101
b.   再找-5的反码     11111111  11111111  11111111  11111010           【原码符号位不变,其它位取反(0->1,1->0)】
c.         -5的补码     11111111  11111111  11111111  11111011            【反码+1】
d.  按位取反运算~    00000000  00000000  00000000  00000100             【这并不是一个最终结果因为在计算机运算的时候,都是以补码的方式来运算的。所以这一步依然是个补码】
e.  由d能看出这个数是正数,正数的原码,反码,补码都一样,所以  结果就是00000000  00000000  00000000  00000100,   即  ~-5=4

二、         2&3=?
a.   2的补码     00000000  00000000  00000000  00000010  
b.   3的补码     00000000  00000000  00000000  00000011
c.按位与运算     00000000  00000000  00000000  00000010      所以结果是    2&3=2

三、        2|3=?
前两步同上,结果是   00000000  00000000  00000000  00000011    结果是  2|3=3

四、        2^3=?

前两步同上,结果是   00000000  00000000  00000000  00000001    结果是 2^3=1

五、        ~2=?
a.          2的补码     00000000  00000000  00000000  00000010
b.          取反运算    11111111  11111111  11111111  11111101   【这一步得到的是运算之后那个数的补码,并不是最终结果】
c.负数的补码推反码   11111111  11111111  11111111  11111100    【补码-1等于反码】
d.负数的反码推原码   10000000  00000000  00000000  00000011    所以  ~2= -3

一个小规律,一个数取反就等于它的相反数再减1。

自己推算    13&7=5   5|4=5   -3^3=-2

【PHP基础】位运算与原码,反码,补码的更多相关文章

  1. C语言原码反码补码与位运算.

      目录:     一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算 ...

  2. 「C语言」原码反码补码与位运算

    尽管能查到各种文献,亲自归纳出自己的体系还是更能加深对该知识的理解.     本篇文章便是在结合百度百科有关原码.反码.补码和位运算的介绍并深度借鉴了张子秋和Liquor相关文章后整理而出.   目录 ...

  3. java原码反码补码以及位运算

    原码, 反码, 补码的基础概念和计算方法. 对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码 原码就是符号位加上真值的绝对值, 即 ...

  4. JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  5. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  6. java基础知识-原码,反码,补码

    1.正数:原码,反码,补码:都一样. 2.负数:和正数的储存方式不同,负数都是以补码形式存储的. <1>负数的补码 把负数的原码除了符号位取反后再+1. <2>负数的原码 把对 ...

  7. Java基础-原码反码补码

    Java基础-原码反码补码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码. 一.原码 ...

  8. 原码 & 反码 & 补码 & 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  9. Java 原码 反码 补码

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  10. 位移&二进制转换&原码&反码&补码

    << 左移 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 格式 需要移位的数字 << 移位的次数 计算过程 1. 按二进制形式把所有的数字向左 ...

随机推荐

  1. JavaScript要点(十七) Math 对象

    来源:JavaScript 参考手册 Math 对象 Math 对象用于执行数学任务. Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(). 语法 var ...

  2. 检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败

    在项目中将数据导出为Excel格式时出现“检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070 ...

  3. 关于document.referrer的使用需要注意

    项目使用到一个场景,ajax请求返回无权限,跳回登录页面,登录后自动返回之前的浏览页,跳转由前端处理,于是想到document.referrer,但是对可靠性不确定,特意搜索了一下相关资料,大致整理如 ...

  4. cJSON 使用笔记

    缘      起 最近在stm32f103上做一个智能家居的项目,其中选择的实时操作系统是 rt_thread OS v1.2.2稳定版本,其中涉及到C和java(android)端数据的交换问题,经 ...

  5. 新建VM_Script

    在Hyper-V群集中,不需要设置VM的自启动,当宿主机意外关机重新启动后,上面的VM会自动转移到另一台主机:如果另一台主机处于关机状态,则宿主机重新启动后,其VM也会自启动(如果其VM在宿主机关机前 ...

  6. 几种连接数据库的OLEDB驱动程序

    以下是连接几种数据库的驱动,把用"<%"和"%>"括住的地方保存为文件你就可以直接调用了 连接Access数据库 <% dim conn,db ...

  7. 【转】larbin主要代码说明

    转自:http://blog.csdn.net/s030702614/article/details/5683928 1. 主函数: int main (int argc, char *argv[]) ...

  8. Codeforces Round #336 (Div. 2) D. Zuma 记忆化搜索

    D. Zuma 题目连接: http://www.codeforces.com/contest/608/problem/D Description Genos recently installed t ...

  9. 一步步学Mybatis-告别繁琐的配置之Mybatis配置文件生成工具 (7)

    今年是2013年的杀青之日,前几天由于比较忙,没有及时更新本篇的最后一篇东西,前六篇中我们主要都是采用手动配置相关的Mybatis映射文件与相应的接口类与实体类.当然如果在真正的使用过程中,由于业务的 ...

  10. !"false"==fasle

    首先要搞清楚优先级 !"false" --->false false == false;---->true !""--->true; !&qu ...