概述
计算机码
计算机在实际存储数据时采用的编码规则(二进制)
计算机码: 原码 反码 和 补码 < 数值本身最左边一位是用来充当符号位:正数 (0) 负数 (1) >
原码 : 数据本身从十进制转换成二进制得到的结果
正数:左边符号位为 0
负数:左边符号位为 1
反码:针对负数,符号位不变,其他位取反
补码:针对负数 反码+1
注 : 正数的反码和补码都是原码
系统中存在两个0 : +0 和 -0
+0 : 00000000
-0 : 10000000 --> 原码
取反 11111111
补码 00000000 (11111111 + 1 --> 逢二进一)
位运算符 (计算机内都是采用补码来进行运算的)
取出计算机中最小的单位(位 bit)进行运算
& :按位与,两个位都为1 , 结果为1 ,否则为0
| :按位或,两个位有一个位1 , 结果为1,
~ :按位非,一个位如果为1则变成0,否则反之
^ :按位异或,两个相同则为0,不同为1
<<:按位左移,整个位(32位),像左移动一位,右边补0
>>:按位右移:整个位(32位),像右移动一位,左边补0
5原码: 00000101
-5原码: 10000101
取反: 11111010
补码: 11111011
-3原码: 10000011
取反: 11111100
补码: 11111101
//基于php代码段,计算过程为通用过程
$e = 5;
$f = -5;
$g = -3;
echo $e&$f;
/* 结果:1
* 过程: 00000101 & 11111011 ==> 00000001
*/
echo "<hr/>";
echo $f&$g;
/* 结果:-7
* 过程: 11111011 & 11111101 ==> 11111001
* 转换: 判断符号位,0表示原码,1表示补码
* 补码转码: 11111001 - 1 ==>11111000 (反码) ==> 10000111(原码) ==> -7
*/
echo "<hr/>";
echo $e|$f;
/* 结果:-1
* 过程: 00000101 | 11111011 ==> 11111111
* 补码转码: 11111111 - 1 ==> 11111110 (反码) ==> 10000001(原码) ==> -1
*/
echo "<hr/>";
echo $f|$g;
/* 结果:-1
* 过程: 11111011 | 11111101 ==> 11111111
* 转换: 判断符号位,0表示原码,1表示补码
* 补码转码: 11111111 - 1 ==>11111110 (反码) ==> 10000001(原码) ==> -1
*/
echo "<hr/>";
var_dump($e>>2);
/* 结果:int(1)
* 过程: 00000101>>2 ==> 00000001
*/
echo "<hr/>";
var_dump($f>>2);
/* 结果:int(-2)
* 过程: 11111011>>2 ==> 11111110
* 补码转码: 11111110 - 1 ==>11111101(反码) ==> 10000010(原码) ==> -2
*/
最后
以上就是秀丽眼神为你收集整理的计算机码与位运算符的全部内容,希望文章能够帮你解决计算机码与位运算符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复