二进制

二进制

Posted by limantang on July 22, 2019

二进制

  1. bit byte 字节 比特 字符 位(二进制)

    首先明确一下平日所说的一些概念

    1 bit 等于 1 位

    1 bit 等于 1 比特

    1 byte 等于 1 字节

    1 byte 等于 8 bit

    1 kb 等于 1024 byte

    在ASCII码中, 1个英文字母占1byte 1个汉字占2byte

    字节(Byte): 字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位.

    位(bit): 二进制系统中, 每个二进制的0或者1就是一个位, 位是数据存储的最小单位, 8bit位1字节, 平时计算机中所说32位或者64位CPU就是代表CPU可以一次性处理的最大位数

  2. 计算机为什么使用2进制

    计算机使用二进制是和现代的计算机硬件实现有关, 组成计算机系统的逻辑电路只有两种状态接通与断开

    断开为0, 接通为1, 每一位数据只有两种状态, 即使系统受到一定干扰, 依然能够通过状态来分辨出数字是0还是1

    因此在具体的系统实现中, 二进制具有极强的抗扰能力, 可靠性高

    相比之下如果采用10进制, 就会存在10状态电路, 大大的提高了情况的复杂性

    二进制非常适合逻辑运算, 逻辑运算中的真假对应二进制1 0

    逻辑运算中的加法(逻辑或)

    逻辑运算中的乘法(逻辑与)

    逻辑运算中的否定(逻辑非)

    都可以通过0和1的加法、乘法和减法来实现。

  3. 二进制的位移操作

    向左位移

    二进制 110101 向左移一位,就是在末尾添加一位 0,因此 110101 就变成了 1101010

    1101010转换为10进制就是106,正好是110101转换为10进制53的2倍

    也就是说二进制左移一位就是将数字翻倍

    向右移位

    二进制 110101 向右移一位, 就是去除末尾的那一位11010

    11010转换为10进制是26, 正好是53除以2的整数商

    也就是说二进制右移一位, 就是将数字除以 2 并求整数商的操作

    更详细的移位操作还需要考虑溢出以及首位的正负判断等

  4. 位或, 位与, 位异或

    位或

    参与操作的位中只要有一个位是1, 那么最终结果就是1, 否则是0

    110101 和 100011或的结果是 110111

    位与

    参与操作的位都是1, 那么最终结果就是1, 否则是0

    110101 和 100011与的结果是 100001

    位异或

    逻辑“异或”和“或”有所不同, 它具有排异性,也就是说如果参与操作的位相同,那么最终结果就为 0(假), 否则为 1(真)所以,如果要得到 1,参与操作的两个位必须不同,这就是此处异的含义

    110101 和 100011异或的结果是 010110 ==> 10110

    异或操作的本质其实就是,所有数值和自身进行按位的异或后每位都是0

    这个条件可以作为两个数值相等的充分必要条件