我是靠谱客的博主 秀丽眼神,最近开发中收集的这篇文章主要介绍计算机码与位运算符,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

计算机码

计算机在实际存储数据时采用的编码规则(二进制)
计算机码: 原码 反码 和 补码 < 数值本身最左边一位是用来充当符号位:正数 (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
	 */

最后

以上就是秀丽眼神为你收集整理的计算机码与位运算符的全部内容,希望文章能够帮你解决计算机码与位运算符所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部