您的位置:首页 > 编程语言 > C语言/C++

C语言进制转换

2016-01-26 10:26 295 查看
//进制转换
//十进制: 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: