知识点整理
在计算机中,整数可以通过二进制、八进制、十进制、十六进制来表示
一.进制
-
a.十进制
基数:0-9
进位:满十进一
位权:123(10) = 1102 + 2101 + 310*0 = 123 -
b.二进制
基数:0、1
进位:逢二进一
位权:101(2) = 120 + 021 + 12*2 = 5 -
c.八进制
基数:0-7
进位:满八进一
位权:123(8) = 180 + 281 + 38*2 = 83 -
d.十六进制
基数:数字(0-9),字母(a-f),字母可小写可大写
进位:逢16进一
位权:123(16) = 1162 + 2161 + 316*0 = 291
程序中如何表示不同进制的数
1.十进制
num = 110 # 程序中十进制直接写
print(num)
2.二进制 (0b+二进制数)
num = 0b1010001
print(num)
print(bin(123)) # 获取123的二进制编码,打印的结果为字符串
3.八进制 (0o+八进制数)
num = 0o1233456
print(num)
print(oct(123)) # 获取123的八进制编码,打印结果为字符串
4.十六进制 (0x+十六进制数)
num = 0x4fa6
print(num)
print(hex(123)) # 获取123的十六进制编码,打印结果为字符串
计算机存储数据存的都是数字数据,而且存的是数字的补码
计算机对数据进行运算的时候是使用补码进行运算,将数据从计算机中读出来看到的是原码
- a.原码
符号位 + 真值(二进制值)
说明:
符号位:最高位是0表示正数,用1表示负数
真值:去掉正负,数字对应的二进制值
例如:
100的原码: 01100100
-100的原码; 11100100
- b.反码:正数的反码就是原码
负数的反码,原码的符号位不变,其余位数取反(1变为0,0变为1)
-100的反码:10011011
- c.补码:正数的补码就是原码
负数的补码就是反码+1(逢二进一)
-100的补码:10011100
二、位运算
运算符:&(按位与)、|(按位或)、~(按位取反)、^(按位异或)、>>(右移)、<<(左移)
- a.按位与运算
数字1 & 数字2 --> 相同位置两个都为1则为1,有一个为0则为0
例如:1011(补)& 0110(补)--> 0010(补)
应用:判断一个数的奇偶性(如果这个数的二进制的最低位是1就是奇数,否则为偶数)
num % 2 == 0 (num是偶数)传统写法
num & 1 == 0 (num是偶数)
num & 1 == 1 (num是奇数)
- b.按位或运算
数字1 | 数字2 --> 有1结果就为1,两个都为0才为0
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
- c.按位取反
~数字:将数字上的每一位取反
将一个数字取反两次,值则为本身
~1 = 0
~0 = 1
-
d.按位异或
数字1 ^ 数字2 :相同为0,不同为1
应用:判断两个数是否相等 -
e.左移、右移
数字1 << N:数字1左移N位,相当于数字12*N
数字1 >> N:数字1右移N位,相当于数字1//2**N
应用:快速乘2、除以2的多少次方
网友评论