位操作:十进制数转为二进制,八进制,十六进制

来源:互联网 发布:ubuntu怎么读u盘 编辑:程序博客网 时间:2024/04/30 01:53
#include <stdio.h>#include <iostream>#define MAP_LEN 16#define HEX_SHIFT 4#define HEX_LEN ( (int)(32/HEX_SHIFT) + 1 )#define OCT_SHIFT 3#define OCT_LEN ( (int)(32/OCT_SHIFT) + 1 )#define BIN_SHIFT 1#define BIN_LEN ( (int)(32/BIN_SHIFT) + 1 )static char mapTable[MAP_LEN] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F' };void int2other( int number, int size, int mask, int shift ) // size 为字符位数,mask 为低位掩码,shift 为右移位数 {        char* result = new char[size];        int i = 0;        int idx;        while ( number )        {idx = number & mask; // 每次取低几位result[ i ] = mapTable[ idx ];number = number >> shift; // 右移++i;        }        for ( --i; i >= 0; i-- ) // 逆序输出字符即可        {printf( "%c", result[i] );        }        printf("\n");delete[] result;}void int2hex( int number ){int2other( number, HEX_LEN, 0xF, HEX_SHIFT );}void int2oct( int number){int2other( number, OCT_LEN, 0x7, OCT_SHIFT );}void int2bin( int number){int2other( number, BIN_LEN, 0x1, BIN_SHIFT );}int main(){int num = 123456789;printf( "%d's hex is: ", num );int2hex(num);printf( "%d's oct is: ", num );int2oct(num);printf( "%d's bin is: ", num );int2bin(num);return 0;}



// main output

	
				
		
原创粉丝点击