美文网首页
2019-01-02day7学习总结

2019-01-02day7学习总结

作者: Little茂茂 | 来源:发表于2019-01-02 17:22 被阅读0次

    在计算机编程中,整数可以通过十进制、二进制、八进制和十六进制来表示

    1. 进制

    十进制

    基数:0,1,2,3,4,5,6,7,8,9
    进位:逢10进1
    位权:123=100+20+3=1*10^2+2*10^1+3*10^0

    二进制

    基数:0,1
    进位:逢2进1
    100(2)==4 101(2)== 5
    位权:101=1*2^0+0*2^1+1*2^2=5

    八进制

    基数:0,1,2,3,4,5,6,7
    进位:逢8进1
    位权:123(8)=3*8^0+2*8^1+1*8^2=83

    十六进制

    基数:0,1,2,3,4,5,6,7,8,9,a/A,b/B,c/C,d/D,e/E,f/F
    进位:逢16进1
    位权:123(16)=3*16^0+2*16^1+1*16^2=291

    2.程序中怎么表示不同进制的数

    a. 十进制

    在程序中直接写的数字都是10进制
    num=110 这是一个十进制数
    print(num) 直接打印其他进制的数就会直接显示十进制数

    b. 二进制

    0b/B+二进制数
    num = 0b1110
    print(bin(0o700)) 把其他进制转换为二进制
    print(bin(0xaf))
    print(bin(100))

    c. 八进制

    0o/O+八进制数
    num = 0o176
    print(oct(800))
    print(oct())

    d. 十六进制

    0x/X+十六进制数
    num =0xaf2
    print(hex(174))

    num1=17
    num2=0b10001
    num3=0o21
    num4=0x11
    print(num1,num2,num3,num4)
    
    

    计算机存储数据的时候只能储存数字数据,而且存的是数字的补码。
    计算机对数据进行运算的时候是使用补码进行运算的,将数据从计算机中读出来看到的是原码

    1. 原码:

    符号位+真值
    说明:
    符号位:最高位是0表示正数,用1表示负数
    真值:去掉正负,数字对应的二进制值

    100的原码:01100100
    -100的原码:11100100

    2. 反码:

    整数的反码:就是原码
    负数的反码:原码的符号位不变,其余的位数取反(0和1互换)

    100的反码:01100100
    -100的反码:10011011

    3. 补码:

    正数的补码:还是原码
    负数的补码:反码+1

    100的补码:01100100
    -100的反码:10011100

    1+1=0进1

    练习:-50的原码、反码和补码
    原码:1110010
    反码:1001101
    补码:1001110

    4. 为什么计算机要存补码?

    因为计算机中只有加法器,没有减法器

    5. 位运算

    &(按位与)、|(按位或)、~(按位取反)、^(按位异或)、>>(右移)、<<(左移)

    数字1 & 数字2 ——> 每一位上的数都为1结果为1,有0就是0

    0111(补) & 1101(补) ——> 0101(补)
    1 & 1 = 1
    1 & 0 = 0
    0 & 1 = 0
    0 & 0 = 0
    特点:一个位上的数如果和1与,可以保留这个位上的数;和0与可以置0

    应用:判断一个数的奇偶性(如果一个数的二进制的最低位是1就是奇数,否则是偶数)
    num % 2 == 0 ——> num是偶数(传统)
    num & 1 == 0 ——> num是偶数
    num & 1 == 1 ——> num是奇数

    数字1 | 数字2 ——> 只要有1结果就为1;两个都为0结果才为0

    1 | 1 = 1
    1 | 0 = 1
    0 | 1 = 1
    0 | 0 = 0
    特点:和1或,置1

    ~数字:将数字的每一位取反

    ~1=0
    ~0=1
    取反两次等于他本身

    数字1^数字2 :相同为0,不同为1

    1 ^ 1 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    0 ^ 0 = 0
    应用:
    a.快速判断两个数是否相同
    b.加密
    """

    print(3 ^ 10097)
    print(10098 ^ 10097) # 加密,10097就是密码,原数按位异或密码再按位异或密码得原数
    

    数字1 << N:数字1左移N位,数字1*(2的N次方)
    数字1 >> N:数字1右移N位,数字1//(2的N次方)
    应用:快速乘2的次方/除2的次方

    print(4 << 1)
    print(-3 << 2)
    print(5 >> 1)  # 整除
    

    相关文章

      网友评论

          本文标题:2019-01-02day7学习总结

          本文链接:https://www.haomeiwen.com/subject/outtrqtx.html