位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)
原文:位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)
先知道这两个二进制数据的特点: 1=0000 0000 0000 0000 0000 0000 0000 0001
-1=1000 0000 0000 0000 0000 0000 0000 0001
1.最高位(首位)表示正负(0为正,1为负)
2.最低位(末位)表示奇偶(0为偶,1为奇)
一、按位取反(~)
十进制1按位取反后=?
分析:
1. 十进制1转为二进制为:1= 0000 0000 0000 0000 0000 0000 0000 0001
2. 按位取反:把原来的二进制得到一个新的二进制,原来是0的则变为1,1的则变为0。
1按位取反后得到 1111 1111 1111 1111 1111 1111 1111 1110
3.二进制的最高位(首位)表示正负(1为负,0为正),如果是负数,如果是负数,则需要用计算机中的补码来表示。
补码:补码=符号位(最高位)以后按位取反再加1.
补码为 1000 0000 0000 0000 0000 0000 0000 0010
4. 结果为:把补码转为十进制: -2;
~1==-2
十进制-1按位取反后=?
1. -1的二进制是 1000 0000 0000 0000 0000 0000 0000 0001
2. 负数是以其补码的形式储存的
-1在计算机中存的是 1111 1111 1111 1111 1111 1111 1111 1111
3. 按位取反: 0000 0000 0000 0000 0000 0000 0000 0000
4.结果为:转为十进制:0
~-1==0
二、按位与and(&)
按位与and(&): 相同位的两个数字都为1,则为1;若有一个不为1,则为0。
25&3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0001
25&3==1
三、按位异或(^)
按位异或(^):相同位不同则为1,相同则为0
25^3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0001 1010
25&3==26
四、按位或(|)
按位或(|):相同位只要一个为1即为1。
25|3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0001 1011
25|3==27
五、右移(>>)
把1的位置向右移n位,超出的就舍掉
15=0000 0000 0000 0000 0000 0000 0000 1111
15>>1=0000 0000 0000 0000 0000 0000 0000 0111
15>>1=7
:右移1位即除以21;,并且取整。
n>>4==n/(24)
64>>4==4
六、左移(<<)
把1的位置向左移n位,超出的就舍掉
:左移1位即乘以21;,并且取整。
n<<4==n*24
2<<4==32
位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)的更多相关文章
- php位运算 与 或 异或 取反
<?php /** php中有4个位运算,分别是&与 |或 ^异或 ~取反 & 两位全为1,结果为1 | 有一位为1,结果为1 ^ 一个为0,一个为1,结果为1 ~ 取反0-&g ...
- <位运算> 任意二进制数 异或两个相同的二进制数 还是原本的值
二进制,即0与1. 因为两个相同的二进制 异或必为0.(类似于不进位加法) 二进制里与0异或为其原本的0与1.. 可得任意二进制数 异或两个相同的二进制数 还是原本的值. 可用于交换和加密.
- LeetCode解题中位运算的运用
位运算是我最近才开始重视的东西,因为在LeetCode上面刷题的时候发现很多题目使用位运算会快很多.位运算的使用包含着许多技巧(详细可以参考http://blog.csdn.net/zmazon/ar ...
- 利用位运算进行a+b的计算(Java&&Python)
题目链接 需要用到的位运算操作:异或(^).与(&).右移(<<) 异或运算:又称不进位加法,a^b得到的结果为a与b相加,但是需要进位的地方不进位得到的结果 与运算:找出来a和b ...
- #C语言初学记录(位运算)
位运算 Problem Description7-1 数组元素循环右移问题 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由 ...
- php实现不用加减乘除号做加法(1、善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍)
php实现不用加减乘除号做加法(1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍) 一.总结 1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍 二.ph ...
- Java中的位运算
昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~ 按位非(NOT)(一元运算) ...
- Java位运算加密
创建一个类,通过位运算中的”^"异或运算符把字符串与一个指定的值进行异或运算,从而改变字符串每个字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,再与那个指定的 ...
- Java的位运算
左移位操作 左移位运算的符号为[<<],左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量. 左移位运算是双目运算符,操作元必须是整型类型的数据,其移动过程是:[a <&l ...
随机推荐
- 建议别买三星Gear:半电脑产品 设计糟糕
不久之前,三星刚刚发布了智能腕表Galaxy Gear,据<纽约时报>周三报道,尽管三星电子的智能手表Galax Gear集各种酷炫新功能于一身,但对消费者来说,却是个差劲的选择. < ...
- Java TCP服务端向客户端发送图片
/** * 1.创建TCP服务端,TCP客户端 * 2.服务端等待客户端连接,客户端连接后,服务端向客户端写入图片 * 3.客户端收到后进行文件保存 * @author Administrator * ...
- Scrapy开发
最近要开发一个软件需要爬取网站信息,于是选择了python 和scrapy下面做一下简单介绍:Scrapy安装连接,scrapy官网连接 所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这 ...
- Java 编程的动态性,第 5 部分: 动态转换类--转载
在第 4 部分“ 用 Javassist 进行类转换”中,您学习了如何使用 Javassist 框架来转换编译器生成的 Java 类文件,同时写回修改过的类文件.这种类文件转换步骤对于做出持久变更是很 ...
- yii 自动生成的内容,分页信息(Displaying 1-10 of 15 results.)如何修改或是yii cgridview template summary
问的白一点就是 Displaying 1-10 of 15 results 如何翻译 如果搜索的话, 搜这个会出来很多内容 yii cgridview template summary 好了,其他不说 ...
- Linux之make 、makefile的使用方法
◊make是什么? make是一个命令工具,是一个解释makefile中指令的命令工具.它可以简化编译过程里面所下达的指令,当执行 make 时,make 会在当前的目录下搜寻 Makefile (o ...
- Linux下查看显示器输出状态以及修改显示器工作模式(复制 or 扩展)
//关闭显示器VGA1xrandr --output VGA1 --off //开启显示器VGA1xrandr --output VGA1 --auto //关闭显示器LVDS1xrandr --ou ...
- lab3
lamp: 在阿里云linux(Ubuntu)上安装Apache mysql php : apt-get install mysql_server mysql_client php5 php_mysq ...
- hdu 2544
#include <iostream> #include <cstdio> #define INF 9999999 //#define INF 0x3f3f3f3 using ...
- starting Intent from ProcessRecord with revoked permission android.permission.CALL_PHONE 的错误
昨天写个电话拨号器,很简单就一个Edittext和一个button,用来输入号码并且点击按钮拨打电话,但是写好以后报的是安全错误,我上网查了下,原来是缺少授权,于是我在AndroidManifest. ...