位操作:十进制数转为二进制,八进制,十六进制
2012-04-25 16:59
295 查看
#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
相关文章推荐
- C语言——十进制转为二进制、八进制、十六进制的函数转换
- 任意长度的十进制数转为二进制、十六进制,和大数除法算法(只有小半份)
- 汇编语言(二):从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q)表示
- pycharm环境下进制转换-将十进制数转换为二进制、八进制、十六进制
- 十进制的正整数,负数, 小数转为二进制.八进制.十六进制的方法 包括原码,反码,补码的介绍
- 二进制、八进制、十六进制 转为 十进制
- 栈的应用--数制转换(十进制数转换为二进制、八进制、十六进制)
- 十进制数与二进制, 八进制, 十六进制之间的转换
- 十六进制,八进制,十进制数转为二进制数显示的函数
- 黑马程序员—操作数组的练习:十进制数转换二进制、八进制、十六进制数。
- 汇编语言:从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q)表示
- 十进制转换为二进制、八进制、十六进制。
- 2 进制转换 | 二进制、八进制、十进制、十六进制整型常量之间的相互转换
- c++下使用CString将字符串转二进制、八进制、十进制、十六进制
- java中进行二进制,八进制,十六进制,十进制间进行相互转换
- 二进制 八进制 十进制 十六进制
- 二进制 八进制 十进制 十六进制
- java中进行二进制,八进制,十六进制,十进制间进行相互转换
- java中表示二进制、八进制、十进制、十六进制,double、float、整型
- 二进制,八进制,十进制,十六进制之间的转换.以及二进制转十进制8421