c语言之将输入的十进制转换成二进制数并打印原码反码补码

news2024/11/28 14:45:10

十进制转二进制

首先,我们要知道的是十进制转换成二进制数的方法。我们一般采用的除二取余的方法,在这里我用32位数组来进行转换。

int main()
{
	printf("请输入一个十进制数\n");
	int n = 0;
	scanf("%d", &n);
	int arr[32];
	int* p = arr;
	for (int i = 31; i >= 0; i--)
	{
		*(p + i) = n % 2;
		n /= 2;
	}
	for (int i = 0; i < 32; i++)
	{
		if (i % 8 == 0)
			printf(" ");
		printf("%d", *(p + i));
	}
	return 0;
}

以上是转换成二进制数并打印出来。

原码

原码第一位是符号位,正数为0,负数为1,其他不变。

int main()
{
	printf("请输入一个十进制数\n");
	int n = 0;
	scanf("%d", &n);
	int arr[32];
	int* p = arr;
	int k = n;
	
	if (n < 0)
	{
		*p = 1;
		k = -n;
	}
	else if (n > 0)
		*p = 0;
	for (int i = 31; i > 0; i--)
	{
		*(p + i) = k % 2;
		k /= 2;
	}
	printf("原码:\n");
	for (int i = 0; i < 32; i++)
	{
		if (i % 8 == 0)
			printf(" ");
		printf("%d", *(p + i));
	}
	return 0;
}

 

反码

若为正数,反码与原码相同。若为负数,反码在原码的基础上符号位不变,其他位按位取反

if (n < 0)
{
	for (int i = 31; i > 0; i--)
	{
		if (*(p + i) == 1)
			*(p + i) = 0;
		else if (*(p + i) == 0)
			*(p + i) = 1;

	}
}
printf("\n反码:\n");
for (int i = 0; i < 32; i++)
{
	if (i % 8 == 0)
		printf(" ");
	printf("%d", *(p + i));
}

补码

若为正数,补码与原码相同,若为负数,补码在反码的基础上末位加一,注意进位的问题。

	if (n < 0)
	{
		*(p + 31) = *(p + 31) + 1;
		for (int i = 31; i > 0; i--)
		{
			if (*(p + i) == 2)
			{
				*(p + i) = 0;
				*(p + i - 1) += 1;
			}
		}
	}
	printf("\n补码:\n");
	for (int i = 0; i < 32; i++)
	{
		if (i % 8 == 0)
			printf(" ");
		printf("%d", *(p + i));
	}
	return 0;
}

 

注意的是,这里有进位的部分,然后因为如果是负数的话,按位取反在反码部分已经完成了,所以不用再进行一遍。

all

最终的代码就是如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	printf("请输入一个十进制数\n");
	int n = 0;
	scanf("%d", &n);
	int arr[32];
	int* p = arr;
	int k = n;
	
	if (n < 0)
	{
		*p = 1;
		k = -n;
	}
	else if (n > 0)
		*p = 0;
	for (int i = 31; i > 0; i--)
	{
		*(p + i) = k % 2;
		k /= 2;
	}
	printf("原码:\n");
	for (int i = 0; i < 32; i++)
	{
		if (i % 8 == 0)
			printf(" ");
		printf("%d", *(p + i));
	}
	if (n < 0)
	{
		for (int i = 31; i > 0; i--)
		{
			if (*(p + i) == 1)
				*(p + i) = 0;
			else if (*(p + i) == 0)
				*(p + i) = 1;

		}
	}
	printf("\n反码:\n");
	for (int i = 0; i < 32; i++)
	{
		if (i % 8 == 0)
			printf(" ");
		printf("%d", *(p + i));
	}
	if (n < 0)
	{
		*(p + 31) = *(p + 31) + 1;
		for (int i = 31; i > 0; i--)
		{
			if (*(p + i) == 2)
			{
				*(p + i) = 0;
				*(p + i - 1) += 1;
			}
		}
	}
	printf("\n补码:\n");
	for (int i = 0; i < 32; i++)
	{
		if (i % 8 == 0)
			printf(" ");
		printf("%d", *(p + i));
	}
	return 0;
}

 

 下面是我的两个运行。

 

 

 

祝:“码”,思泉涌,下“指”如有神。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1348887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于FFT + CNN - Transformer 时域、频域特征融合的轴承故障识别模型

目录 往期精彩内容&#xff1a; 前言 1 快速傅里叶变换FFT原理介绍 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 3 基于FFTCNN-Transformer的轴承故障识别模型 3.1 网络定义模型 3.2 设置参数&#xff0c;训练模型 3.3 模型评估 往期精彩内容&…

FPGA项目(13)——基于FPGA的电梯控制系统

1.摘要 随着科技的发展&#xff0c;电梯早在上个世纪就已进入人们的生活。对于电梯的控制&#xff0c;传统的方法是使用继电器——接触器控制系统进行控制。随着EDA技术的发展&#xff0c;FPGA已广泛应用于各项电子设计中&#xff0c;本设计即利用FPGA来实现对电梯控制系统的设…

loTDB数据库学习笔记之初识 —— 筑梦之路

loTDB简介 IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎。具有体量轻、性能高、易使用的特点&#xff0c;适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求&#xff0c;同时包含数据订阅、数据同步、负载均衡和运维监控功能。 由清华大学…

家具定制出库标签打印,家具出入库进销存管理系统软件教程

一、前言 1、家具管理软件如何打印标签&#xff1f; 上图打印标签&#xff0c;以 佳易王家具出入库管理软件V16.1版本为例 说明&#xff0c;在打印标签的时候&#xff0c;可以同时打印自己的LOGO&#xff0c;而且可以根据需要定制打印格式。 2、软件中 &#xff0c;预定家具如…

【Maven】下载配置maven以及IDEA配置maven详情

目录 1、下载maven 2、配置settings.xml 2.1、配置本地仓库 2.2、配置阿里云镜像仓库 2.3、配置JDK 3、配置环境变量 4、IDEA配置maven 1、下载maven maven官网&#xff1a;https://maven.apache.org/ 2、配置settings.xml 2.1、配置本地仓库 <localRepository>C:\…

NLP:预测新闻类别 - 自然语言处理中嵌入技术

简介 在数字时代&#xff0c;在线新闻内容呈指数级增长&#xff0c;需要有效的分类以增强可访问性和用户体验。先进机器学习技术的出现&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;为文本数据的自动分类开辟了新的领域。本文[1]探讨了在 NLP …

力扣回溯算法-电话号码的字母组合

力扣第17题&#xff0c;电话号码的字母组合 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 .电话号码的字母组合 示例: 输入&#xff1a;“2…

LeetCode每日一题.05(N皇后)

按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。 每一种…

第三代半导体SiC 专业术语及指标解释

SiC &#xff1a; 化合物半导体材料&#xff0c;第三代半导体材料代表&#xff0c;主要用于功率半导体领域 GaN &#xff1a; 化合物半导体材料&#xff0c;第三代半导体材料代表&#xff0c;主要用于高频射频领域 GaAs&#xff1a; 化合物半导体材料&#xff0c;第二…

在VMware上安装Ubuntu:详细教程

关于VMware和Ubuntu VMware VMware 是一家全球领先的虚拟化和云基础架构解决方案提供商。它提供了多个产品和技术&#xff0c;用于管理和优化计算机资源的使用&#xff0c;实现虚拟化、云计算和数据中心自动化等功能。 以下是 VMware 公司提供的一些主要产品&#xff1a; V…

vue2 jeecg-boot

业务介绍 &#xff1a; 在首页进行数据的添加&#xff0c;添加之后 将数据传递给后端&#xff0c;后端会计算&#xff0c;在返回给前端&#xff0c;前端拿到进行渲染&#xff0c;拿到数据跳转到结果页面&#xff0c;点击存档后&#xff0c;才可以触发下载和浏览&#xff0c;不…

Cisco模拟器-交换机端口的隔离

设计要求将某台交换机的端口划分在不同的VLAN。以实现连接在相同VLAN端口上的计算机可以通信&#xff0c;而连接在不同VLAN端口上的计算机无法通信的目的。 通过设计&#xff0c;一方面可以加强计算机网络的安全&#xff0c;另一方面通过隔绝不同VLAN间的广播包也可以提高网络…

分布式缓存Redis

基于Redis集群解决单机Redis存在的问题&#xff0c;在之前学Redis一直都是单节点部署 单机或单节点Redis存在的四大问题&#xff1a; 数据丢失问题&#xff1a;Redis是内存存储&#xff0c;服务重启可能会丢失数据 > 利用Redis数据持久化的功能将数据写入磁盘并发能力问题…

Windows CPU部署llama2量化模型并实现API接口

目录 模型部署本地运行llama2使用fastapi实现API接口常用git仓库 模型部署 从huggingface下载模型 https://huggingface.co/ 放在本地文件夹&#xff0c;如下 本地运行llama2 from ctransformers import AutoModelForCausalLMllm AutoModelForCausalLM.from_pretrained(&q…

【Python】ubuntu python>3.9编译安装,及多个Python版本并存的使用方法

【Python】ubuntu python3.9编译安装&#xff0c;及多个Python版本并存的使用方法 1. 安装依赖2. 编译与安装2.1 依赖与源获取2.2 配置2.3 编译2.4 安装2.5 建立软连接 链接动态库 3. 多版本兼容 1. 安装依赖 更新系统软件 在正式开始之前&#xff0c;建议首先检查系统软件是否…

2023下半年的总结

我从八月下旬开始写的&#xff0c;到现在差不多有半年了&#xff0c;总结一下吧&#xff01; 1.计算机视觉 在计算机视觉方面&#xff0c;想必两个有名的深度学习框架&#xff08;TensorFlow和PyTorch&#xff09;大家都很清楚吧&#xff0c;以及OpenCV库。对于人脸识别&…

FPGA项目(14)——基于FPGA的数字秒表设计

1.功能设计 设计内容及要求: 1.秒表最大计时范围为99分59. 99秒 2.6位数码管显示&#xff0c;分辨率为0.01秒 3.具有清零、启动计时、暂停及继续计时等功能 4.控制操作按键不超过二个。 2.设计思路 所采用的时钟为50M&#xff0c;先对时钟进行分频&#xff0c;得到100HZ频率…

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

ROS2第一个节点 引言1 认识ROS2节点1.1 节点之间的交互1.2 节点的命令行指令1.3 工作空间1.4 功能包1.4.1 功能包获取安装1.4.2 功能包相关的指令 ros2 pkg 2 ROS2构建工具—Colcon2.1 安装Colcon2.2 测试编译2.3 Colcon其他指令 3 使用RCLPY编写节点3.1 创建Python功能包3.2 编…

2024新版塔罗占卜网站源码风水起名附带搭建视频及文本教程

附带文本教学及视频教程安装方法以linux为例&#xff1a; 1、建议在服务器上面安装宝塔面板&#xff0c;以便操作&#xff0c;高逼格技术员可以忽略这步操作。 2、把安装包文件解压到根目录&#xff0c;同时建立数据库&#xff0c;把数据文件导入数据库 3、修改核心文件conf…

力扣-206. 反转链表

文章目录 力扣题目代码 力扣题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#x…