二进制
二进制(binary)在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 [1] 。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(Bit,Binary digit的缩写)
进制转换
十进制转换为二进制
一个十进制整数转换为二进制数采用 “除2取余,逆序排列”法。 具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来
例如 125 转为 二进制
125 / 2 = 62 余 162 / 2 = 31 余 031 / 2 = 15 余 115 / 2 = 7 余 17 / 2 = 3 余 13 / 2 = 1 余 11 / 2 = 0 余 1余数从低位到高位依此排列: 1 1 1 1 1 0 1
二进制转换为十进制
方法:“按权展开求和”。 该方法的具体步骤是先将二迸制的数写成加权系数展开式,而后根据十进制的加法规则进行求和
例如:
# 1 1 1 1 1 0 11==> 1*2^6+ 641==> 1*2^5+ 321==> 1*2^4+ 161==> 1*2^3+ 81==> 1*2^2+ 40==> 0*2^1+ 01==> 1*2^0+ 1= 125
Python位运算符
按位运算符是把数字看作二进制来进行计算的。bin()函数可以把数字转为二进制。
Python中的按位运算法则如下:
下表中变量 a 为 60,b 为 13二进制格式如下:
a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~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 |
