我可以用printf打印十六进制或八进制数字。是否有格式标签打印为二进制或任意基数?
我正在运行gcc。
printf("%d %x %o\n", 10, 10, 10); //prints "10 A 12\n"
printf("%b\n", 10); // prints "%b\n"
我可以用printf打印十六进制或八进制数字。是否有格式标签打印为二进制或任意基数?
我正在运行gcc。
printf("%d %x %o\n", 10, 10, 10); //prints "10 A 12\n"
printf("%b\n", 10); // prints "%b\n"
当前回答
至于我,我为此编写了一些通用代码
#include<stdio.h>
void int2bin(int n, int* bin, int* bin_size, const int bits);
int main()
{
char ch;
ch = 'A';
int binary[32];
int binary_size = 0;
int2bin(1324, binary, &binary_size, 32);
for (int i = 0; i < 32; i++)
{
printf("%d ", binary[i]);
}
return 0;
}
void int2bin(int n, int* bin,int *bin_size,const int bits)
{
int i = 0;
int temp[64];
for (int j = 0; j < 64; j++)
{
temp[j] = 0;
}
for (int l = 0; l < bits; l++)
{
bin[l] = 0;
}
while (n > 0)
{
temp[i] = n % 2;
n = n / 2;
i++;
}
*bin_size = i;
//reverse modulus values
for (int k = 0; k < *bin_size; k++)
{
bin[bits-*bin_size+k] = temp[*bin_size - 1 - k];
}
}
其他回答
接下来将向您展示内存布局:
#include <limits>
#include <iostream>
#include <string>
using namespace std;
template<class T> string binary_text(T dec, string byte_separator = " ") {
char* pch = (char*)&dec;
string res;
for (int i = 0; i < sizeof(T); i++) {
for (int j = 1; j < 8; j++) {
res.append(pch[i] & 1 ? "1" : "0");
pch[i] /= 2;
}
res.append(byte_separator);
}
return res;
}
int main() {
cout << binary_text(5) << endl;
cout << binary_text(.1) << endl;
return 0;
}
void PrintBinary( int Value, int Places, char* TargetString)
{
int Mask;
Mask = 1 << Places;
while( Places--) {
Mask >>= 1; /* Preshift, because we did one too many above */
*TargetString++ = (Value & Mask)?'1':'0';
}
*TargetString = 0; /* Null terminator for C string */
}
调用函数“拥有”字符串…:
char BinaryString[17];
...
PrintBinary( Value, 16, BinaryString);
printf( "yadda yadda %s yadda...\n", BinaryString);
取决于您的CPU, PrintBinary中的大多数操作呈现给一个或很少几个机器指令。
void DisplayBinary(unsigned int n)
{
int l = sizeof(n) * 8;
for (int i = l - 1 ; i >= 0; i--) {
printf("%x", (n & (1 << i)) >> i);
}
}
这可能不是很有效,但很简单。试试这个:
tmp1 = 1;
while(inint/tmp1 > 1) {
tmp1 <<= 1;
}
do {
printf("%d", tmp2=inint/tmp1);
inint -= tmp1*tmp2;
} while((tmp1 >>= 1) > 0);
printf(" ");
使用以下功能:
void conbin(int num){
if(num != 0)
{
conbin(num >> 1);
if (num & 1){
printf("1");
}
else{
printf("0");
}
}
}