在计算机编程中,整数可以通过二进制、八进制、十进制、十六进制来表示
1.进制
1.十进制
a.基数:0,1,2,3,4,5,6,7,8,9
b.进位:逢十进一
c.位权:123=110^2+2101+3*100
2.二进制
a.基数;0,1
b.进位:逢二进一
c.位权:101=12^0+02^1+122=5
3.八进制
a.基数:0,1,2,3,4,5,6,7
b.进位:逢八进一
c.位权:123(8)=38^0+281+1*82=83
4.十六进制
基数:0,1,2,3,4,5,6,7,8,9,a/A(10),b/B(11),c/C(12),d/D(13),e/E(14),f/F(15)
b.进位:逢十六进一
c.位权:123(16)=123=116^2+2161+3*160=291
2.程序中怎么表示不同进制的数
a.十进制 直接写
A=10 #这是一个十进制的数
print (A) #直接打印其他进制数就会显示他的十进制
b.二进制
0b+二进制数
num=0b110
print(bin(800)) 打印二进制数的800
print(bin(0xff)) 打印十六进制数的ff
c.八进制
0o+八进制数
num=0o12376
print(oct(800))打印八进制的800
d.十六进制
0x/0X+十六进制数
num=0xa21f
print(hex(255))打印十六进制的255
3.计算机码
计算机存储数据只能存储数字数据,而且存的是数字的补码。
计算机存数据进行运算的时候是使用补码进行运算的,展示结果是使用补码进行运算的,将数据从计算机中读出来看到的是原码
1.原码:
符号位+真值
说明:最高位用0表示正数,1表示负数
真值:去掉正负的数字对应的二进制数
100的原码:01100100
-100的原码:11100100
2.反码:
正数的反码:就是原码
负数的反码:符号位不变,其余位数取反(0变1,1变0)
100的反码:01100100
-100的反码:10011011
3.补码
正数的补码:还是补码
负数的补码:反码加1
100的补码:01100100
-100的反码:10011100
-50的原码:1110010
-50的反码:1001101
-50的补码:1001110
4.为什么要存补码?
因为计算器只有加法器,没有减法器
4.位运算:
&(按位与),|(按位或运算),~(按位取反),^(按位异或运算),>>右移,<<左移
a.
与运算:数字1 & 数字2 --->都为1结果才为1,否则为0
0111 & 1101 --->0101(补码)
特点:一个位上的数如果和1与,可以保留这个位上的数;和0可以置0
应用:判断一个数的奇偶性
num & 1 ==0 --->num是偶数
num & 1 == 1 --->num是奇数
b.
或运算:两个为0才为0
0111 | 1101 ---> 1111
特点:和1或,置1
c.
~数字(取反):将数字上的每一位取反
~1 = 0
~0 = 1
d.
数字1 ^ 数字2(异或运算):相同为0,不同为1
1^1=0
1^0=1
0^1=1
0^0=0
应用:加密;判断两个数是否相等:相同两个数异或1结果为0
e.
数字1 << N :将数字1左移N位,数字12^N
数字2 >> N :将数字1右移N位,数字12^N
应用:快速乘2的N次方/除2的N次方