【PHP基础】位运算与原码,反码,补码
对于有符号的而言:
①二进制的最高位是符号位: 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基础】位运算与原码,反码,补码的更多相关文章
- C语言原码反码补码与位运算.
目录: 一.机器数和真值 二.原码,反码和补码的基础概念 三.为什么要使用原码,反码和补码 四.原码,补码,反码再深入 五.数据溢出测试 六.位运算 ...
- 「C语言」原码反码补码与位运算
尽管能查到各种文献,亲自归纳出自己的体系还是更能加深对该知识的理解. 本篇文章便是在结合百度百科有关原码.反码.补码和位运算的介绍并深度借鉴了张子秋和Liquor相关文章后整理而出. 目录 ...
- java原码反码补码以及位运算
原码, 反码, 补码的基础概念和计算方法. 对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码 原码就是符号位加上真值的绝对值, 即 ...
- JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...
- Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...
- java基础知识-原码,反码,补码
1.正数:原码,反码,补码:都一样. 2.负数:和正数的储存方式不同,负数都是以补码形式存储的. <1>负数的补码 把负数的原码除了符号位取反后再+1. <2>负数的原码 把对 ...
- Java基础-原码反码补码
Java基础-原码反码补码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码. 一.原码 ...
- 原码 & 反码 & 补码 & 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...
- Java 原码 反码 补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...
- 位移&二进制转换&原码&反码&补码
<< 左移 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 格式 需要移位的数字 << 移位的次数 计算过程 1. 按二进制形式把所有的数字向左 ...
随机推荐
- 学习JQuery中文文档之index()函数
最初认识index()是在轮播图中,获取当前点击对象在数组中的位置.那时候,对index()的使用只有eq($(this).index()),看了文档之后,才知道自己有多幼稚! <!DOCTYP ...
- nodejs以及npm的安装
参考资料:http://xiaoyaojones.blog.163.com/blog/static/28370125201351501113581/ 上面的仁兄说的比较清楚,基本解决了安装中遇到的问题 ...
- 【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式
背景: 年11月,微软宣布作为ECMA国际主要合作伙伴,将其开发的基于XML的文件格式标准化,称之为"Office Open XML" .Open XML的引进使office文档结 ...
- 分享 Java微信开发SDK
分享 Java微信开发SDK •发布于 4周前 •作者 朋也 •432 次浏览 •最后一次编辑是 2周前 •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin ...
- Android Client and Jsp Server
1. Interestfriend Server https://github.com/eltld/Interestfriend_server https://github.com/774663576 ...
- Ubuntu:Target filesystem doesn't have /sbin/init (Slax 解决)
计算机(Ubuntu)因为异常断电或是其它原因,再次启动时.非常不幸的出现: Killed mount: mounting /dev on /root/dev failed: No such file ...
- Swift2.0 中的String(一):常用属性
字符串算是平常用的比较多.花样也比较多的一个类型,昨天有空把相关的一些常用操作都写了一遍,总结出来.其实iOS里面的字符串更复杂,还有NSString系列等等,那些API太多将来需要用的时候再慢慢学. ...
- Codeforces #250 (Div. 2) C.The Child and Toy
之前一直想着建图...遍历 可是推例子都不正确 后来看数据好像看出了点规律 就抱着试一试的心态水了一下 就....过了..... 后来想想我的思路还是对的 先抽象当前仅仅有两个点相连 想要拆分耗费最小 ...
- Linux五种IO模型
http://www.cnblogs.com/renxs/p/3683189.html
- 在ascx中调用另一个ascx的写法
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...