【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. 按二进制形式把所有的数字向左 ...
随机推荐
- C# 绘制统计图(柱状图, 折线图, 扇形图)
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...
- Android学习之路
Android基础 整理下个人认为新手们必须要掌握的知识点,顺便也会附带相应觉得不错的讲解博客地址. 两分钟彻底让你明白Android Activity生命周期(图文)! Activity实际开发中使 ...
- Android输入输出机制之来龙去脉
openInputChannelPair( 阅读本文的前提条件是知道匿名管道和匿名共享内存是怎么一回事,否则阅读相应的文章. Anonymous pipes 和Anonymous Shared Mem ...
- js中日期转换为时间戳
function dateToTimestamp(date) { //方法一 var newDate = new Date(); newDate.setFullYear(date.substring( ...
- GIT分支管理是一门艺术
英文原文:http://www.nvie.com/posts/a-successful-git-branching-model/ 原文作者:Vincent Driessen 本文经Linux大棚博主总 ...
- cisco路由基于策略的路由选择
cisco路由基于策略的路由选择 基于策略的路由选择是一种手段,通过它管理员可以在基于目的地的路由选择协议中实现偏离标准路由的路由选择.基于目的地的路由选择协议将根据到一个目的地的最短路径选择路由,基 ...
- 配置apache虚拟主机的实例总结
如何实现apache虚拟主机配置. 1.基于ip地址的虚拟主机Listen 80<VirtualHost 172.20.30.40> DocumentRoot /home/httpd/ht ...
- mysql服务器的常规操作
mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...
- main方法无法编译
main方法无法编译,可能是没有括号的原因
- tachyon 集群容错
集群容错就是HA.这次顺带也练一下hadoop的HA 环境: centos6.5+jdk1.7+hadoop2.2.0+tachyon0.5.0+zookeeper3.4.6 hadoop 192.1 ...