美文网首页
day7homeword

day7homeword

作者: y_j杨健 | 来源:发表于2019-01-02 17:18 被阅读0次
    在计算机编程中,整数可以通过十进制、二进制、八进制、十六进制来表示

    1.进制

    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
    
    1. 二进制
    基数:0,1
    进位:逢2进1
    100(2) == 4(10)
    权位:101 =  1*2**0 + 0*2**1 + 1*2**0
    
    1. 八进制
    基数:0,1,2,3,4,5,6,7
    进位:逢8进1
    位权:123(8) = 3*8**0  +  2*8**1 + 1*8**2 = 83
    
    1. 十六进制
    基数:0-9,a/A - f/F  --  a/A(10),b/B(11)..f/F(15)
    1f ,ff,a00bf
    进位:逢16进1
    位权:123(16) = 3*16**0 + 2*16**1 + 1*16**2 = 291
    

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

    在程序中直接写的数字都是10进制

    num = 110   # 这是一个十进制数
    二进制
     0b + 二进制数
    num = 0b110
    print(bin(100))
    print(bin(0x256df))  #  获取十六进制对应的二进制
    # 八进制
    # 0o + 八进制数、
    num = 0o764
    print()
    

    十六进制

     0x + 十六进制
    num = 0x5fd
    print(num)
    print(hex(1997))
    print(hex(175))
    

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

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

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

    反码:
    正数的反码:就是原码
    负数的反码:原码的符号位不变,其他的位数取反

    -100的反码:10011011
    

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

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

    练习:-50

     原码: 1110010
     反码:1001101
     补码:1001110
    

    为什么计算机要存补码?
    因为计算机只有加法器,没有减法器

    3 - 2  -->  3 + (-2) = 1
    2 - 3 -->  2 + (-3) = -1
    3的原码:011
    -2的原码:110
    # 存原码:
    3-2 = 011 + 110 =001 = 1
    2 - 3 = 111+010 = 001 = 1
    

    位运算:&(按位与)|(按位或)~(按位取反) ^(按位异或) >>(右移) <<(左移)
    数字1 & 数字2 ---> 每一位上的数都为1结果就是1,有0就是0

    0111(补)   & 1101(补)  -->0101(补)
    print(3 & 2)   #  0011 & 00150 --> 0010
    

    应用:判断一个数的奇偶性(如果一个数的二进制的最低位是1就是奇数,否则就是偶数)

    num % 2 == 0-->  num是偶数
    num & 1 == 0 -->  num是偶数
    num & 1 == 1 -- > num是奇数
    

    数字1 | 数字2 :只要有1结果就是1,两个都为0结果才是0
    特点:和1或,置1

    print(3 | 2)  # 0011 |0010 = 0011
    

    ~数字:将数字上的每一位取反
    ~1 = 0

    数字1^数字2 : 相同为0,不同为1
    1^1 = 0
    1^0 = 1
    0^1 = 1
    0^0 = 0
    应用:加密
    
    数字1<<n:数字1左移n位   数字1*2**n
    数字1>>n:数字1右移n位   数字1//2**n
    应用:快速乘2的次方/除2的次方
    

    相关文章

      网友评论

          本文标题:day7homeword

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