`
java发烧狂人
  • 浏览: 3162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

二进制移位详解

阅读更多
首选我先说下什么是2进制、和16进制
2进制:2进1,通过1和0两个数字来表示一个整形数字
16进制:16进1,通过0、2、3、4、5、6、7、8、9、a、b、c、d、e、f来表示一个数字

2进制里如何表示0-10这个数字呢
2进制:0、1、10、11、100、101、110、111、1000、1001、1010
16进制里如何表示0-17的数字呢
16进制:0x0、0x1、0x2、0x3、0x4...0x9、0xa、0xb、0xc、0xd、0xe、0xf、0x10、ox11
(如果这个规律看不懂那就自己面壁去吧)

我来解释下在程序里出现的a<<b、a>>b 这种方式就是二进制移位运算,也是一种最高效的运算方式,根据以上提供的2进制规律进行移位,a<<b是指a的2进制位向左移动b位.a>>b是指a的2进制位向右移动b位。
我举个简单例子:2<<1 1<<2 7>>2 5>>3(我这里列举一个比较小的数字比较容易懂)
根据以上提供的数字0-10的2进制位可以知道整数2的2进制位是10,2<<1的意思是二进制位往左移1位。10往左移1位的结果是100(右边加一个0),100正好是整数4的2进制位。所以2<<1的运算结果是4。
1<<2,1的2进制位是1,1向左移两位就是100,也是4。所以1<<2的运算结果也是4
7>>2,7的2进制位是111,向右移动2位的结果是1,1正好是整数1的2进制位 所以7>>2的运算结果是1
5>>3,5的2进制位是101,向右移动3位的后就没了。没了就用0表示,0正好是整数0的2进制位。所以5>>3的运算结果是0
分享到:
评论

相关推荐

    二进制图文详解

    二进制图文详解 二进制Binary 2进制 逢二进一的计数规则。 在计算机内部,一切数据都是2进制的!! 2进制的数字 补码 补码本质是一种解决负数问题的算法。 1. 将数据的一半当做负数使用。 2. 补码在内存中是2...

    c#的异或运算符介绍

    代码如下: int a = 5; int b = 30; Console.WriteLine(a^b); Console.ReadKey(); 输出结果是27 这是因为 5的二进制是0000 ... 您可能感兴趣的文章:深入理解C++移位运算符C# 位运算符整理C++位运算符详解(异或

    Java运算符介绍.pptx.pptx

    Java运算符分类 Java运算符主要分为四类:算术运算符、关系运算符、逻辑运算符和位运算符,这些运算符...位运算符主要用于处理二进制数据,包括与、或、非、异或和移位等操作,它们可以实现对数据的快速处理和转换。

    python的移位操作实现详解

    因为要将js的一个签名算法移植到python上,遇到一些麻烦。 int无限宽度,不会溢出 ...这个二进制是11101011011110011010001010100000000000000000000 明显已经超出32位了 在JS上 [removed]ln(123456789 &lt;&lt; 20);

    C++位运算符详解(异或运算符和移位运算符)

    位运算符按二进制进行运算,这些运算符只能用于整数类型的操作。如:char,short,int,long 通过位运算符来获取高位值和低位值 int a=0x1234; int high,low; high = (a&gt;&gt;8) &0x00ff; low = a & 0x00ff; 左移运算符和...

    图文详解C语言位运算基础知识

    1. 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。 2. 与运算:只有前后两个运算数都是 1 的时候结果才是1。 3. 或运算:有1位为1,结果便...

    C程序范例宝典(基础代码详解)

    实例002 十进制转换为二进制 3 实例003 n进制转换为十进制 4 实例004 以IP地址形式输出 5 1.2 条件判断 6 实例005 3个数由小到大排序 6 实例006 a2+b2 8 实例007 整倍数 9 实例008 判断闰年 10 实例...

    java基础案例与开发详解案例源码全

    3.2.2 普及二进制36 3.2.3 进制间转换37 3.2.4 基本数据类型间转换38 3.2.5 数据类型应用实例38 3.2.6 引用数据类型39 3.3 关键字.标识符.常量39 3.3.1 变量命名规范39 3.3.2 经验之谈-常见错误的分析与处理40 ...

    算法心得:高效算法的奥秘(原书第2版).[美]Henry S.Warren,Jr(带详细书签).pdf

    11.3.1 用n的二进制分解式计算xn 250 11.3.2 用Fortran语言计算2n 251 11.4 整数对数 252 11.4.1 以2为底的整数对数 253 11.4.2 以10为底的整数对数 253 11.5 习题 257 第12章 以特殊值为底的数制 258 12.1 ...

    宋劲彬的嵌入式C语言一站式编程

    1. 为什么计算机用二进制计数 2. 不同进制之间的换算 3. 整数的加减运算 3.1. Sign and Magnitude表示法 3.2. 1's Complement表示法 3.3. 2's Complement表示法 3.4. 有符号数和无符号数 4. 浮点数 15. 数据类型详解...

    整理后java开发全套达内学习笔记(含练习)

    二进制是无法精确的表示 0.1 的。 进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时...

Global site tag (gtag.js) - Google Analytics