/* * 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 ", a,a); //%d 以十进制打印 //二进制 // int nu = 0b1100; // printf("%d ", nu); //%d 以十进制打印 //八进制 int o = 014; printf("%o->=%d ", o,o); //%o 以八进制打印 //十六进制 int x = 0xc; printf("%x->=%d ", 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(" "); } int main15() { // num_show_type(); putBinary(12); return 0; }