A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.二进制向其他进制的转换方法:
核心的思想:
(1)2进制转化为10进制的时候:
直接按位,从左开始,每位置上的数值(无非就是0和1)乘以对应的2的指数(指数从左往右依次是0,1,2,3,........)得到的所有乘积再相加起来就可以转化为10进制了!
(2)2进制转化为8进制的时候:
记住,每3位2进制是一个8进制,所以在向8进制转换的时候需要先把这堆二进制数字划分为三个一组,划分完成后再分别直接按位,从左开始,每位置上的数值(无非就是0和1)乘以对应的2的指数(指数从左往右依次是0,1,2最多到2)得到的所有乘积(注意得到的每个乘积是不可能大于7的!)按照顺序组合起来,这样就可以了!记得在前面加上“0”!
(3)2进制转化为16进制的时候:
每4位2进制是一个16进制,所以在向16进制转换的时候需要先把这堆二进制数字划分为四个一组,划分完成后再分别直接按位,从左开始,每位置上的数值(无非就是0和1)乘以对应的2的指数(指数从左往右依次是0,1,2,3最多到3)得到的所有乘积(注意得到的每个乘积是不可能大于15的!)按照顺序组合起来,这样就可以了!记得在前面加上“0x”!记住从10开始到15分别是A ,B,C,D,E,F,不分大小写。
练习:
ob 011 111 111=0 3 7 7
ob 0000 1111 1111=0x 0 F F
ob 11111111=1乘以2的7次方+1乘以2的6次方+···

ob 0001 0111 1110 0101=0x 1 7 E 5
ob 001 011 111 100 101=0 1 3 7 4 5
ob 1011111100101=1乘以2的12次方+0乘以2的11次方+1乘以2的10次方+····
2.其他进制向二进制的转换方法:
10进制向2进制转换的时候是用余2得到的余数倒序得出的;而8进制和16进制则是将其各个位的数字给分开,然后分别用2进制表示出即可。(注意这个时候别忘记8进制是要转化为3位,16进制要转化为4位)
练习:
0x123=ob 0001 0010 0011
0123=ob 001 010 011
123=ob 1111011
附加一道C语言题:
十进制整数转换成任意进制数(2,8,16)
#include <stdio.h>

int main(int argc, const char * argv[]) {  
    int num;
    printf("请输入一个十进制整数\n");
    scanf("%d",&num);
    printf("打印这个数的十六进制数:0x%x\n",num);
    printf("打印这个数的八进制数:0%o\n",num);
    printf("打印这个数的二进制数:");
    for (int i = 31; i >= 0; i--) {
        printf("%d",(num>>i)&1);
        if (0 == i%8) {
            printf(" ");
        }
    }
    return 0;
}

1 个回复

倒序浏览
过来温习一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马