num; // 使用 bitset 来转换十进制数 // 32 表示 bitset 的大..."/>

C++ 十进制转二进制

使用标准库中的 bitset

#include "iostream"
#include "bitset"

using namespace std;
int main() {
	int num;
	cout << "输入一个十进制数字: ";
	cin >> num;
	
	// 使用 bitset 来转换十进制数
	// 32 表示 bitset 的大小,足以容纳 int 类型的二进制表示
	bitset<32> binary(num);
	
	cout << "十进制 " << num << " 转换为二进制为: " << binary << endl;
	return 0;
}

使用标准库中的 sprintf

#include "stdio.h"

int main() {
	int num = 10; // 十进制数
	char binaryStr[33]; // 二进制字符串,足够存放32位整数的二进制表示加上一个结束符'\0'
	
	// 使用 sprintf 将十进制数转换为二进制字符串
	sprintf(binaryStr, "%32s", ""); // 初始化字符串,全部填充为空格
	for (int i = 31; i >= 0; i--) {
		int k = num >> i;
		if (k & 1)
			binaryStr[31 - i] = '1';
		else
			binaryStr[31 - i] = '0';
	}
	
	printf("十进制数 %d 的二进制表示为: %s\n", num, binaryStr);
	return 0;
}

使用位操作 包含负数

#include "bits/stdc++.h"
using namespace std;

uint32_t d2b(int32_t n){
	if(n>=0){
		return(uint32_t)n;
	}else{
		return ~((uint32_t)(-n))+1;
	}
}

int main(){
	int32_t d_num;
	cin >> d_num;
	
	uint32_t b_num = d2b(d_num);
	
	bitset<32> bb(b_num);
	cout << bb << endl;
	
	return 0;
}

//**************************

#include "stdio.h"
#include "stdint.h"

// 函数用于将十进制数转换为16位二进制补码
uint32_t d2b(int32_t d_num) {
	// 如果是正数或0,直接返回其二进制表示
	if (d_num >= 0) {
		return (uint32_t)d_num;
	} else {
		// 对于负数,先取反再加1
		return ~((uint32_t)(-d_num)) + 1;
	}
}

int main() {
	int32_t d_num = -255;
	uint32_t b_num = d2b(d_num);
	
	// 打印32位二进制数
	for (int i = 31; i >= 0; --i) {
		printf("%d", (b_num >> i) & 1);
		if (i == 8) {
			printf(" "); // 在第9位后添加空格,方便阅读
		}
		if (i == 16) {
			printf(" "); // 在第17位后添加空格,方便阅读
		}
		if (i == 24) {
			printf(" "); // 在第25位后添加空格,方便阅读
		}
	}
	printf("\n");
	
	return 0;
}
正文完
 0
nekoda
版权声明:本站原创文章,由 nekoda 于2024-11-20发表,共计385字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)