一、进制
在计算机编程中,整数可以通过十进制、二进制、八进制和十六进制来表示
1、十进制
基数:0、1、2、3、 4、 5、 6、 7、 8、 9
进位:逢10进1
位权:例如:123 = 100 + 20 + 3
2、二进制
基数:0、1
进位:逢2进1
位权:例如:1100 = 8+ 4 + 0 + 0
3、八进制
基数:0、1、2、3、4、5、6、7
进位:逢8进1
位权:例如:67 = 48 + 7
4、十六进制
基数:0~ 9、a(A)~f(F) --- a(A)(10) , b(B)(11), c(C)(12), d(D)(13), e(E)(14), f(F)(15)
进位:逢16进1
位权:例如:ff= 255
程序中怎么表示不同进制的数
写法 | 说明 | 打印 |
---|---|---|
num = 110 | 直接写的数字就是10进制 | 直接打印其他进制数会显示十进制 |
num = 0o110 | 0o+八s进制数 | oct(num),返回八进制字符串 |
num = 0b110 | 0b+二进制数 | bin(num),返回二进制字符串 |
num = 0x110 | 0x+十六 进制数 | hex(num),返回十六进制字符串 |
二、二进制
计算机存储的时候只能存储数字数据,而且存的是数字的补码。计算机对数据进行运算的时候是使用补码进行运算的,将数据从计算机中读出来看到的是原码。
1.原码
符号位+真值
说明:
符号位:最高位是0表示正数,是1表示复数
真值:去掉正负,数字对应的二进制
100的原码:01100100
-100的原码:11100100
2.反码
正数的反码:就是原码
负数的反码:原码的符号位不变,其余的位数取反。
100的反码:01100100
-100的反码:10011011
3.补码
正数的补码:还是原码
负数的补码:反码+1
100的补码:01100100
-100的补码:10011100
为什么要存补码:
因为计算机中只有加法器,没有减法器。如果计算机两个数相减,计算机内部是加上一个负数。
三、位运算
符号 | 说明 | 如果a=0b1010,b=0b1100 |
---|---|---|
& | 按位与运算 | a & b,结果为0b1000 |
| | 按位或运算 | a | b,结果为0b1110 |
~ | 按位取反 | ~b,结果为-0b1101 |
^ | 按位异或 | a ^ b,结果为0b110 |
<< | 左移 | a<<1,结果为0b10100 |
>> | 右移 | a>>1,结果为0b101 |
与运算:一个位上的数如果和1与,可以保留这个位上的数;和0与可以置0。
应用:判断一个是逇奇偶性。
num % 2 == 0 # num是偶数
# 如果是偶数这个数的二进制的最低位为0,为1是奇数
num & 1 == 0 # num是偶数
num & 1 == 1 # num是奇数
左移N为相当于数字*2的N次方
右移N位相当于数字//2的N次方
应用:快速乘2,整除2操作。
网友评论