C语言进制转换

//进制转换

//十进制: 0 1 2 3 4 5 6 7 8 9  10 11 ... 99 100...

//十进制是人类最自然的语言


//计算机

//二进制: 0 1

//有高低电平  约定高点平为 1 低电平为0

//10100101010


//5+6

//机器语言

//1010010101010

//1010101010010

//1010101010011


//5+6

//汇编语言

//movl $5 %rbp(-8)

//movl $6 %rbp(-12)

//movl %rbp(-8) %eax

//addl %rbp(-12) %eax

//movl %eax  %esi


//C语言

//int sum = 0;

//int a= 5;

//int b = 6;

//sum = a+b;

//简洁 执行效率高 健壮性强


//objective C  java  C++


//十进制转十进制

//123 = 123

//123 / 10 ---3 = 3*10^0

//12  / 10 ---2 = 2*10^1

//1   / 10 ---1 = 1*10^2

//0


//十进制: 0 1  2   3   4    5    6    7     8     9

//二进制: 0 1  10  11  100  101  110  111   1000  1001


//2倒序取余数

//123

//123 / 2 ---> 1

//61  / 2 ---> 1

//30  / 2 ---> 0

//15  / 2 ---> 1

//7   / 2 ---> 1

//3   / 2 ---> 1

//1   / 2 ---> 1

//0

//0b是二进制数的前缀

//123 = 0b1111011 = 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3+0*2^2 + 1*2^1 + 1*2^0 = 64 + 32 + 16 + 8 + 0 + 2 + 1 = 123


//int main(int argc, const char * argv[]) {

//    printf("%d\n", 0b1111011);

//    return 0;

//}


//96 245 78


//int main(int argc, const char *argv[])

//{

//    int num;

//    scanf("%d", &num);

//    int bin[32]={};

//    int i=0;

//    while (num) {

//        bin[i++]=num%2;

//        num/=2;

//    }

//    printf("0b");

//    for (i--; i>=0; i--) {

//        printf("%d", bin[i]);

//    }

//    printf("\n");

//    return 0;

//}

//二进制转十进制: 把每一位二进制代表的数值和相加

//0b110101 = 1*2^5 + 1*2^4 + 0 + 1*2^2 + 0 + 1 = 53


//八进制: 0 1 2 3 4 5 6 7

//"逢八进一"

//八进制前缀 0

//10  11 12 13 14 15 16 17 20  21 22 23 ... 77 100 ... 101


//int main(int argc,const char *argv[])

//{

//    printf("%d\n", 010);//%d是打印十进制数的占位符

//    printf("0%o\n", 14);//%o是打印八进制数的占位符

//    return 0;

//}


//八进制转二进制

//将八进制数的每一位分别用三位二进制数替换

//"421"

//  0   1   2   3   4   5   6   7

//  000 001 010 011 100 101 110 111

//016 = 0b1110


//二进制数转八进制数

//从低位开始每三位为一组, 高位不足三位补0, 每三位二进制数分别用一位八进制数替换

//0b 011 110 100 101 010 011 010 010 = 036452322


//十六机制数:

//"8421"

//0    1    2    3    4    5    6    7

//0000 0001 0010 0011 0100 0101 0110 0111

//8    9    a/A   b/B   c/C   d/D  e/E   f/F

//1000 1001 1010  1011  1100  1101 1110  1111


//"逢十六进一"

//十六进制转二进制

//0x是十六进制数的前缀

//分别用四位二进制数替换每一位十六进制数

//0x1ff = 0b111111111

//0xabc129 = 0b101010111100000100101001


//int main(int argc, const char *argv[])

//{

//    printf("%d\n", 0x20);

//    printf("0x%x\n", 120);//%x是打印十六进制数的占位符

//    

//    return 0;

//}


//二进制转十六进制

//方法: 从低位开始, 每四位为一组, 高位不足四位补0, 用分别用十六进制数替换每四位二进制数

//0b 0011 1011 1101 0011 1101 0100 0001 1010 = 0x3bd3d41a


//内存: 存储数据信息的地方

//RAM + ROM

//16G

//00000000  ~ 11111111



//bit(二进制位)

//1Byte(字节)  = 8bits

//1Kb  = 1024Bytes

//1Mb  = 1024Kbs

//1Gb  = 1024Mbs

//1Tb  = 1024Gbs

//1Pb  = 1024Tbs


//16G = 16*1024*1024*1024*8


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值