C语言学习笔记:15_c语言中的进制操作.c

/*
 * 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;
}

原文地址:https://www.cnblogs.com/gcczhongduan/p/5218052.html