/*
* 15_c语言中的进制操作.c
*
* Created on: 2015年7月5日
* Author: zhong
*/
#include <stdio.h>
#include <stdlib.h>
/**
* c语言中的进制表示
* 前面加0b表示二进制
* 加0x表示十六进制
* 数字前加0表示八进制
*
* printf按进制打印
* %d %i 以十进制打印
* %o 以八进制打印
* %x 以十六进制打印
*
* %p 打印变量地址
* %f 打印小数
* %s 打印字符串
* %c 打印字符
*
*
*
1.二进制转十进制
0b1100 = 0 * 2的0次方 + 0 * 2的1次方 + 1 * 2的2次方+ 1 * 2的3次方
= 0 + 0 + 4 + 8 = 12
0b1111 = 1 + 2 + 4 + 8 = 15
0b1010 = 10
2.十进制转二进制
67 = 64 + 2 + 1 = 2的6次方 + 2的1次方 + 2的0次方
= 0b1000000 + 0b10 + 0b1
= 0b1000011
3.n位二进制的取值范围
2位二进制位的取值范围:0~3 0~2的2次方-1
3位二进制位的取值范围:0~7 0~2的3次方-1
n位二进制位的取值范围:0~2的n次方-1
4个字节 -> 31bit
0 000 0000 0000 0000 0000 0000 0000 1100
0 ~ 2的31次方-1
*
*
*/
void num_show_type() {
//默认就是十进制表示
int a = 12;
printf("%d->%o\n", a,a); //%d 以十进制打印
//二进制
// int nu = 0b1100;
// printf("%d\n", nu); //%d 以十进制打印
//八进制
int o = 014;
printf("%o->=%d\n", o,o); //%o 以八进制打印
//十六进制
int x = 0xc;
printf("%x->=%d\n", x); //%x 以十六进制打印
}
// 输出一个整数的二进制存储形式
void putBinary(int n)
{
int bits = sizeof(n) * 8;
while (bits-->0) {
printf("%d", n>>bits&1);
if (bits%4==0) printf(" ");
}
printf("\n");
}
int main15() {
// num_show_type();
putBinary(12);
return 0;
}