美文网首页十天学会C语言
第06天C语言(02):进制转换

第06天C语言(02):进制转换

作者: liyuhong | 来源:发表于2017-07-08 12:03 被阅读32次
一、概念
/*
 1.十进制 转 二进制
 规律 : 用需要转换的十进制 除以2 取余数 , 然后倒数
     13 / 2 = 6 余 1
     6 / 2 = 3 余 0
     3 / 2 = 1 余 1
     1 / 2 = 0 余 1
     -------- = 1101
 
 2. 二进制 转 十进制
 规律 : 从低位数开始, 用低位 乘以 2的 多少次幂, 幂数从0开始,然后再相加
     二进制 : 1101
         1 * 2(0) = 1
         0 * 2(1) = 0
         1 * 2(0) = 4
         1 * 2(3) = 8
         1 + 0 + 4 + 8 = 13
     口诀
         1 1 1 1
         8 4 2 1
 
 3.  二进制 转 八进制
 规律 : 三个二进制位 代表一个八进制位, 只需要将3个二进制位 转换为十进制, 之后再将所有的结果连接起来
        1001 转换为  00 001 001
        0  1   1
        ------------------------
        011 == 0 * 8 + 1 * 8 + 3 = 11(十进制)
 
4. 二进制 转 十六进制
 规律 : 四个二进制位代表一个十六进制位, 只需要将4个二进制位转换成10进制, 之后再将所有的结果连接起来
     0001 1011
     --------
     1   b = 0x1b
*/
二、代码
#include <stdio.h>
int main()
{
#pragma 1. 十进制 转 二进制     

    /*
     9 / 2 = 4 余 1
     4 / 2 = 2 余 0
     2 / 2 = 1 余 0
     1 / 2 = 1 余 1
     9的 二进制 就是 0b1001
     
     15 / 2 = 7 余 1
     7 / 2 = 3 余 1
     3 / 2 = 1 余 1
     1 / 2 = 0 余 1
     
     13 / 2 = 6 余 1
     6 / 2 = 3 余 0
     3 / 2 = 1 余 1
     1 / 2 = 0 余 1

     */
    
    printf("%i\n",0b1001);
    printf("%i\n",0b1111);
    printf("%i\n",0b1101);

#pragma 2. 二进制 转 十进制

    /*
     二进制 : 1001
     1 * 2(0) = 1
     0 * 2(0) = 0
     0 * 2(0) = 0
     1 * 2(3) = 8
     
     1 + 0 + 0 + 8 = 9
     
     二进制 : 1101
     1 * 2(0) = 1
     0 * 2(1) = 0
     1 * 2(0) = 4
     1 * 2(3) = 8
     
     1 + 0 + 4 + 8 = 13
     口诀 
     1 1 1 1 
     8 4 2 1
     
     1 * 2(0) = 1
     1 * 2(1) = 2
     1 * 2(0) = 4
     1 * 2(3) = 8
     
     */
    
    
    // N为二进制的取值范围
    // 1位 : 0~1  0~2(n)-1 = 0~1
    // 2位 : 0~3  0~2(2)-1 = 0~3
    // 3位 : 0~7  0~2(3)-1 = 0~7
    
    /*
     000
     001
     010
     011
     100
     101
     110
     111
     */
#pragma 3.  二进制 转 八进制

    /*
     1001 转换为  00 001 001
                  0  1   1
     ------------------------
     011 == 0 * 8 + 1 * 8 + 3 = 11
     
     00 011 011
     ----------
     033  == 0 * 8 + 3 * 8 + 3 = 27
     */
    printf("---\n");
    printf("%i\n",033);
    printf("二进制 转 八进制 %i\n",0b11011);
    
#pragma 4. 二进制 转 十六进制

    /*
     0001 1011
     --------
        1   b = 0x1b
     
     */
    
    printf("---\n");
    printf("二进制 转 十六进制 %i\n",0x1b);
    return 0;
}

相关文章

网友评论

    本文标题:第06天C语言(02):进制转换

    本文链接:https://www.haomeiwen.com/subject/xlwdhxtx.html