位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)
原文:位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)
先知道这两个二进制数据的特点: 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 ...
随机推荐
- 八、频繁模式挖掘Frequent Pattern Mining
频繁模式挖掘(Frequent Pattern Mining): 频繁项集挖掘是通常是大规模数据分析的第一步,多年以来它都是数据挖掘领域的活跃研究主题.建议用户参考维基百科的association r ...
- Spring 3 来创建 RESTful Web Services
Spring 3 创建 RESTful Web Services 在 Java™ 中,您可以使用以下几种方法来创建 RESTful Web Service:使用 JSR 311(311)及其参考实现 ...
- 查询表达式Linq
LINQ简介 OO(面向对象)以外的疆域:信息的访问与整合.关系数据库与XML为其中的典型应用. .net Language Integrated Query(Linq):不采用特定关于数据库与XML ...
- 经典算法:快排的Javascript版本
function swap(arr,l,r){ var temp=arr[l]; arr[l]=arr[r]; arr[r]=temp; } function partition(arr,camp,l ...
- Java基础知识强化70:正则表达式之引入案例(QQ号码校验)
1. 校验QQ号码的案例,如下: package cn.itcast_01; import java.util.Scanner; /* * 校验qq号码. * 1:要求必须是5-15位数字 * 2:0 ...
- 线段树---HDU1754 I hate it
这个题也是线段树的基础题,有了上一个题的基础,在做这个题就显得比较轻松了,大体都是一样的,那个是求和,这个改成求最大值,基本上思路差不多,下面是代码的实现 #include <cstdio> ...
- CSS选择符详解之关系选择符篇
原文:http://www.chinaz.com/web/2012/1017/278553.shtml 相信大家都对CSS选择符都不陌生,选择符包含:元素选择符.关系选择符.属性选择符.伪类选择符.伪 ...
- redis入门指南学习笔记
redis的常见命令 set key hello get key incr num get num set foo lorem incr foo hset car price 500 hset car ...
- linux的sudo apt-get install 和dpkg -i <package.deb>命令
ubuntu统一的安装软件命令 sudo apt-get install ** sudo dpkg -i <package.deb>
- .Net程序员 Solr-5.3之旅 (三)Solr 从MSSQ导入索引数据
阅读目录 引言 准备工作 data-config.xml schema.xml 导入数据 结尾 附件下载 引言 Other men live to eat, while I eat to live.- ...