二进制

二进制(binary)在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 [1] 。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(Bit,Binary digit的缩写)

进制转换

十进制转换为二进制

一个十进制整数转换为二进制数采用 “除2取余,逆序排列”法。 具体做法是:用2整除十进制整数,可以得到一个余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来

例如 125 转为 二进制

  1. 125 / 2 = 62 1
  2. 62 / 2 = 31 0
  3. 31 / 2 = 15 1
  4. 15 / 2 = 7 1
  5. 7 / 2 = 3 1
  6. 3 / 2 = 1 1
  7. 1 / 2 = 0 1
  8. 余数从低位到高位依此排列: 1 1 1 1 1 0 1

二进制转换为十进制

方法:“按权展开求和”。 该方法的具体步骤是先将二迸制的数写成加权系数展开式,而后根据十进制的加法规则进行求和

例如:

  1. # 1 1 1 1 1 0 1
  2. 1==> 1*2^6
  3. + 64
  4. 1==> 1*2^5
  5. + 32
  6. 1==> 1*2^4
  7. + 16
  8. 1==> 1*2^3
  9. + 8
  10. 1==> 1*2^2
  11. + 4
  12. 0==> 0*2^1
  13. + 0
  14. 1==> 1*2^0
  15. + 1
  16. = 125

Python位运算符

按位运算符是把数字看作二进制来进行计算的。bin()函数可以把数字转为二进制。

Python中的按位运算法则如下:

下表中变量 a 为 60,b 为 13二进制格式如下:

  1. a = 0011 1100
  2. b = 0000 1101
  3. -----------------
  4. a&b = 0000 1100
  5. a|b = 0011 1101
  6. a^b = 0011 0001
  7. ~a = 1100 0011
运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111