美文网首页
二进制基础

二进制基础

作者: 撸码小狂魔 | 来源:发表于2017-12-04 11:19 被阅读25次

了解

  1. 十进制和二进制的由来
  • 进制转换
  • 位运算
  • JDK内置的进制转换
  • Java中的进制

十进制和二进制的又来

十进制可以说是中国的一大发明,早在商代初期的甲骨文中,就发现了用于计数的数字。

甲骨文.png

除了十进制外,日常生活中还有计算机所用的16进制,古埃及所用的60进制,雅玛人用的20进制,测量角度所用的360进制等等方便运算的计数系统。
计算机采用的是二进制,在中国神秘的周易中的伏羲八卦图发现了二进制。

伏羲八卦图.png

西方认定二进制是莱布尼茨,G.W.发明的

莱布尼茨

进制转换##

了解

  1. 什么是二进制?
  • 二进制怎么表示一个数?
  • 计算机为什么要使用二进制?
二进制的相关概念(1) 二进制的相关概念(2) 二进制转十进制(3).png 十进制转二进制 适合计算机的进制 常用进制转换

二进制位运算##

位运算说白了就是对二进制位执行的位操作,在特定情况下,计算方便,速度快,被支持面广。如果用算数方法,速度慢,逻辑复杂,在单片机的情况下,有的复杂指令不一定支持。


二进制位运算

1、按位与 &

两位全为1,结果才为1
范例

0&0=0;     0&1=0;    1&0=1;    1&1=1;

51&5  即 0011 0011 & 0000 0101 = 0000 0001    因此51&5=1;

位运算的特殊用法:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
范例

设:X=10101110,取X的低4位,用X&0000 1111 = 0000 1110 即可得到

方法:找一个数,对应X要取得位,该数的对应位为1,其余为零,此数与X进进“与运算”可以得到X中的指定位。

2、按位或 |

只要有一个为1,结果就为1
范例

0|0=0;    0|1=1;    1|0=1;    1|1=1;
51 | 5 即 0011 0011 | 0000 0101 = 0011 0111 因此51 | 5 =55;

或运算的特殊用法:
常用来对一个数据的某些位置1
范例

将X = 10100000的低4位置1,用X | 0000 1111 = 1010 1111即可得到

方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零,此数与X相或可使X中的某些位置1。

3、异或运算 ^

两个相应位为“异”(值不同),则该位结果位1,否则为0
范例

0^0=0;    0^1=1;    1^0=1;    1^1=0;
51^5 即 0011 0011 ^ 000 0101 = 0011 0110 因此 53 ^ 5 =54;

异或运算的特殊用途
(1)使特定位反转。找一个数,对应X要反转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。
范例

X=10101110,使X低4位反转,用X……0000 1111 = 1010 000即可得到

(2)与0相异或,保留原值
范例

X^0000 0000 = 1010 1110

两个变量交换值的方法

  1. 借助第三个变量来实现。
    C=A; A=B; B=C;
  2. 利用佳佳办法实现两个变量的交换
    A=A+B; B=A-B; A=A-B;
  3. 用位异或运算来实现,也是效率最高
    原理:利用一个数异或本身等于0和异或运算符交换律。
    A=A^B; B=A^B; A=A^B;

4、取反运算 ~

对一个二进制数按位取反,即将0变1,1变0

5、左运算 <<

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)
范例

2 << 1 =4

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
范例

-14 (即二进制的11110010 )<< 2 = 11001000

6、右移运算 >>

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。操作数的每右移一位,相当于该数除以2。
左补0 or 补1得看被移数时正还是负。
范例

1 = 4 >> 2
-14 (11110010) >> 2 = -4 (11111100)

7、无符号右移运算 >>>

各个位向右移指定为位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。
范例

-14 >>> 2

负数以其正值的补码形式表示

原码
一个整数按照绝对值大小转换成的二进制数称为原码。
例如:00000000 00000000 00000000 00001110是14的原码
反码
将二进制数按位取反,所得的新二进制数称为原二进制数的反码
例如:00000000 00000000 00000000 00001110每一位取反,得11111111 11111111 11111111 11110001
补码
反码加1称为补码
11111111 11111111 11111111 11110001 +1 = 11111111 11111111 11111111 111110010

相关文章

  • Java 基本数据类型二进制转换

    概述 本文主要介绍java基础类型的二进制转换和二进制的基本概念。 二进制: 1,二进制是以0和1为码,逢2进1,...

  • 计算机基础之二进制(20190131)

    计算机基础之二进制(20190131) 1. 基本常识 2. 负数二进制表示

  • iOS 底层网络科普

    网络的根本,是 Berkley 或 BSD Sockets。它们执行基础网络任务:收发二进制数据 因为这些二进制数...

  • C语言基础。。。。(文件-宏定义)

    C语言基础 文件 设备文件:scoket,FIFO,sda 普通文件:二进制文件,文本文件二进制文件格式:数据按其...

  • 算法位运算总结

    在位运算之前,对二进制需要掌握的基础知识 正数的二进制,例如 5原码是 0000 0000 0000 0000 0...

  • 二进制基础

    IP地址规划,子网划分需要用到二进制相关知识。 二进制与十进制的转换。 进制转换:http://jinzhi.su...

  • 二进制基础

    了解 十进制和二进制的由来 进制转换 位运算 JDK内置的进制转换 Java中的进制 十进制和二进制的又来 十进制...

  • 二进制基础

    二进制转十进制 十进制转二进制 八进制转二进制 二进制的位运算 关于负数的右移与无符号右移运算小结

  • Java基础系列-二进制操作

    原创文章,转载请标注出处:《Java基础系列-二进制操作》 概述 Java源码中涉及到大量的二进制操作,非常的复杂...

  • Javassist 字节码插桩

    Javassist基础 Javassist 使您可以 检查、编辑以及创建Java 二进制类。Javassist 使...

网友评论

      本文标题:二进制基础

      本文链接:https://www.haomeiwen.com/subject/tgmphxtx.html