Linux & 标准C语言学习 <DAY8_1>

一、进制转换
    1、为什么要使用二进制、八进制、十六进制
        因为目前的CPU只能识别高低两种电平,只能对二进制数据进行计算
        二进制虽然能够直接被计算机识别,但是不方便人去书写和记录,因此就把二进制数据转换成八进制,方便记录到文档中
        随着CPU的位数的不断增加,已经到目前的64位,所以八进制不再能够满足需求,因此发展出现在的十六进制
   
    2、十进制转其它进制:求余法、求权法

    3、其它进制转十进制:每位乘权位再求和

    4、二进制转八进制:
        从低位起,每三个二进制位对应一个八进制位
        二进制:10 101 110 111 100
        八进制:2   5   6   7   4

    5、二进制转十六进制
        从低位起,每四个二进制位对应一个十六进制位
        二进制: 10 1011 1011 1100
        十六进制:2   B   B   C

    6、不同进制在程序中的显示
        C代码中,以0开头的数据是八进制数据,以0x/0X开头的是十六进制数据
        进制数据:
            %x      让数据以十六进制显示
            %o      让数据以八进制显示
            %#x %#o 显示出数据对应的进制前缀
   
    7、原码、反码、补码
        原码:数据的二进制
        反码:
            正数的反码就是原码
            负数的反码:符号位不变,其它位按位求反
        补码:
            正数的补码就是原码
            负数的补码:反码+1

    8、补码如何转成数据:
        先确定是有符号还是无符号
            1、无符号或最高位为0:补码直接转成十进制
            2、有符号且最高位为1:
                a、补码-1,得到反码
                b、符号位不变,其余位按位求反,得到原码
                c、原码转十进制数

二、位运算符
    &   按位相与
    |   按位相或
    ~   按位求反
    ^   按位异或
    <<  按位左移n位,左边超出的丢弃,右边补0
    >>  按位右移n位,右边超出的丢弃,左边补符号位(正0负1)
    注意:只要式子中出现了位运算符,必须转换成*二进制补码再进行运算


posted @ 2023-03-07 17:22  Phonyeee  阅读(17)  评论(0编辑  收藏  举报