当前位置: 首页 > news >正文

C语言实现原码一位除

具体代码如下,直接运行即可。

#include <stdio.h>
int main()
{int i, a = 0, b = 0, c = 0, flag = 3; // flag相当于指针来指明Q的位置char x[6], y[6];int R[6], Q[6], yb[6], y1[6]; // yb是-y的补码,y1为绝对值yprintf("请输入X(带一位符号位四位数值位的二进制数,如+1011):");scanf("%5s", x); while ((c = getchar()) != '\n' && c != EOF); // 清除缓冲区中的剩余字符printf("请输入Y(带一位符号位四位数值位的二进制数,如-1101):");scanf("%5s", y); // printf("X=%s\n",x);// printf("Y=%s\n",y);y1[0] = 0; // 绝对值y一定是正的,符号位为0for (i = 4; i >= 1; i--){if (y[i] == '1'){ // 将字符型的y变成int型的绝对值yy1[i] = 1;}elsey1[i] = 0;}// printf("y的绝对值y1:");// for (i = 0; i <= 4; i++)// {// 	printf("%d", y1[i]);// }// printf("\n");if (x[0] == '+'){a = 0;x[0] = '0'; // 符号位计算}else // 这里我怀疑是有点问题,先加个大括号先,出问题再删{	a = 1;x[0] = '1';}if (y[0] == '+'){b = 0;y[0] = '0';}else // 这里我怀疑是有点问题,先加个大括号先,出问题再删{	b = 1;y[0] = '1';}if (a + b == 1) //只有一个1一个0,异号的时候才结果为负{c = 1;}elsec = 0; // c为符号位yb[0] = 1;for (i = 4; i >= 0; i--){ //-y的补码计算if (y1[i] == 1) //!!!我这里把y改成了y1yb[i] = 0; // 取反//我这里不取反试试// yb[i] = 1;elseyb[i] = 1;//我这里不取反试试// yb[i] =0;}// printf("y1取反后的值:");// for (i = 0; i <= 4; i++)// {// 	printf("%d", yb[i]);// }// printf("\n");yb[4] = yb[4] + 1; // 末尾加一for (i = 4; i > 0; i--){if (yb[i] == 2){ // 满2进一位yb[i] = 0;yb[i - 1] += 1;}if (yb[i] == 3){ // 满3进一位 且留下1yb[i] = 1;yb[i - 1] += 1;}}// printf("-y1的补码yb为:");// for (i = 0; i <= 4; i++)// {// 	printf("%d", yb[i]);// }// printf("\n");for (i = 4; i >= 0; i--){Q[i] = 0; // 给Q赋初值}R[0] = 0; // 设置余数for (i = 4; i >= 1; i--){ // 给R做初始化if (x[i] == '1')R[i] = 1;elseR[i] = 0;}// printf("R的初始值:"); // 余数符号位为0 数值位为x的值// for (i = 0; i <= 4; i++)// {// 	printf("%d", R[i]);// }// printf("\n");while (flag >= 1){ // 当flag=1时相当于全部除完if (flag == 1){ // 最后一步不移位  单独提出来for (i = 4; i >= 0; i--){ // 余数R加上-y的补码R[i] += yb[i];if (R[i] == 2){ // 满2进一位R[i] = 0;R[i - 1] += 1;}if (R[i] == 3){ // 满3进一位 且留下1R[i] = 1;R[i - 1] += 1;}}if (R[0] == 1){ // 若符号位为1 说明不够减 再加y恢复余数,不够减Q=0Q[4] = 0;}elseQ[4] = 1;break;}for (i = 4; i >= 0; i--){ // 余数R加上-y的补码R[i] += yb[i];if (R[i] == 2){ // 满2进一位R[i] = 0;R[i - 1] += 1;}if (R[i] == 3){ // 满3进一位 且留下1R[i] = 1;R[i - 1] += 1;}}if (R[0] == 1){ // 若符号位为1 说明不够减 再加y恢复余数,不够减Q=0Q[4] = 0;flag -= 1; // 向左移动一位for (i = 4; i >= 1; i--){R[i] += y1[i];if (R[i] == 2){ // 满2进一位R[i] = 0;R[i - 1] += 1;}if (R[i] == 3){ // 满3进一位 且留下1R[i] = 1;R[i - 1] += 1;}} // 不够减先恢复余数再左移for (i = 0; i <= 3; i++){ // 左移R[i] = R[i + 1];}//!!! 这里应该是逻辑左移的,所以我重新设为0// R[4] = Q[0]; // 将Q的第一个移动给RR[4] = 0 ;for (i = 0; i <= 3; i++){ // 左移Q[i] = Q[i + 1];}} // 恢复后R[0]符号位又变成了0else{			   // 够减直接左移Q[4] = 1;  // 够减Q为1flag -= 1; // 向左移动一位for (i = 0; i <= 3; i++){ // 左移R[i] = R[i + 1];}//!!! 还是逻辑左移设为0// R[4] = Q[0]; // 将Q的第一个移动给RR[4] = 0;for (i = 0; i <= 3; i++){ // 左移Q[i] = Q[i + 1];}}}printf("商Q的值:");for (i = 0; i <= 4; i++){printf("%d", Q[i]);}printf("\n");printf("余数R的值:0.000");for (i = 0; i <= 4; i++){printf("%d", R[i]);}printf("\n");printf("X/Y=%d.", c);for (i = 1; i <= 4; i++){printf("%d", Q[i]);}printf("\n");return 0;
}

相关文章:

C语言实现原码一位除

具体代码如下&#xff0c;直接运行即可。 #include <stdio.h> int main() {int i, a 0, b 0, c 0, flag 3; // flag相当于指针来指明Q的位置char x[6], y[6];int R[6], Q[6], yb[6], y1[6]; // yb是-y的补码,y1为绝对值yprintf("请输入X(带一位符号位四位数值位…...

three.js点滴yan(整理后)

场景、相机和渲染器 Three.js整个系统主要包含场景Scene、相机Camera和WebGL渲染器WebGLRenderer三大块&#xff0c;其中场景又包含模型和光源。WebGL渲染器的主要作用就是把相机对应场景渲染出来&#xff0c;显示在网页Cnavas画布上。 Three.js源码 Three.js各个构造函数对应…...

VMware安装CentOS最小化开发环境导引

目录 一、概要 二、介绍 三、下载 四、安装 4.1 创建虚拟机 4.2 安装CentOS 五、配置网卡 六、配置本地安装源 七、安装软件 7.1 gcc/g 7.2 C的atomic库 7.3 java 7.4 Cmake 7.5 MariaDB客户端&#xff08;兼容mysql&#xff09; 八、用户配置文件.bash_profile…...

服务器端编程/数据库驱动程序/RESTful API:介绍

目录 服务器端编程数据库驱动程序RESTful API &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️ 收藏&#xff0c;你的青睐是我努力的方向&#xff01; ✏️ 评论&#xff0c;你的意见是我进步的财富&#xff01; 服务器端编程 服务器端编程是一种计…...

Qwt QwtThermo绘制温度计

1.简介 QwtThermo 是一个基于 Qt 框架的类库&#xff0c;用于创建温度计控件。它提供了一些方便的功能来展示和处理温度计相关的数据。 QwtThermo 添加了特定于温度计的功能。 使用 QwtThermo&#xff0c;可以实现以下功能&#xff1a; 设置温度范围&#xff1a;可以通过设置…...

U_boot介绍

系统移植之前的了解的&#xff1a; 首先需要移植一个 bootloader 代码&#xff0c;这个 bootloader 代码用于启动 Linux 内核&#xff0c;bootloader 有很多&#xff0c;常用的就是 U-Boot;移植好 U-Boot 以后再移植 Linux 内核&#xff0c;移植完 Linux 内核以后 Linux 还不能…...

Flink -- window(窗口)

1、窗口主要分成三大种&#xff1a; 1、Time Window &#xff08;时间窗口&#xff09;&#xff1a;固定时间触发一次窗口 a、SlidingEventTimeWindows: 滑动的事件时间窗口 public class Demo1TImeWindow {public static void main(String[] args) throws Exception {/*** 时…...

原语:串并转换器

串并转换器OSERDESE2 可被Select IO IP核调用。 OSERDESE2允许DDR功能 参考&#xff1a; FPGA原语学习与整理第二弹&#xff0c;OSERDESE2串并转换器 - 知乎 (zhihu.com) 正点原子。 ISERDESE2原语和OSERDESE2原语是串并转换器&#xff0c;他的的功能都是实现串行数据和并行…...

没网络也能安装.Net 3.5!如何脱机安装.NET Framework 3.5

.NET框架是由微软制定的一个软件框架。它有助于在Windows上运行控制台、Web或移动应用程序。此有用的工具适用于Windows设备。 如何脱机安装.NET Framework 3.5 如果你拥有Windows 10、8、8.1或7,有时第三方软件可能会导致问题。你可能会在图片中看到这样的问题。 看这张照片…...

JVM运行时数据区-虚拟机栈

目录 一、内存中的栈 二、基本内容 三、优点 四、栈的存储单位 五、栈运行原理 六、栈的内部结构 &#xff08;一&#xff09;局部变量表 &#xff08;二&#xff09;操作数栈 &#xff08;三&#xff09;动态链接 &#xff08;四&#xff09;方法返回地址 &#xf…...

Java中介者模式

目录 定义 结构 案例 优点 缺点 使用场景 定义 又叫调停模式&#xff0c;定义一个中介角色来封装一系列对象之间的交互&#xff0c;使原有对象之间的耦合松散&#xff0c;且可以独立地改变它们之间的交互。 结构 中介者模式包含以下主要角色&#xff1a; 抽象中介者角…...

前端框架Vue学习 ——(五)前端工程化Vue-cli脚手架

文章目录 Vue-cliVue项目-创建Vue项目-目录结构Vue项目-启动Vue项目-配置端口Vue项目开发流程 Vue-cli 介绍&#xff1a;Vue-cli 是 Vue 官方提供的一个脚手架&#xff0c;用于快速生成一个 Vue 的项目模版 安装 NodeJS安装 Vue-cli npm install -g vue/cliVue项目-创建 图…...

App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法

根据近日工业和信息化部发布的《工业和信息化部关于开展移动互联网应用程序备案工作的通知》&#xff0c;相信不少要进行IOS平台App备案的朋友遇到了一个问题&#xff0c;就是apple不提供云管理式证书的下载&#xff0c;也就无法获取公钥及证书SHA-1指纹。 已经上架的应用不想重…...

Spring -Spring之依赖注入源码解析

依赖注入底层原理流程图&#xff1a;Spring中Bean的依赖注入原理| ProcessOn免费在线作图,在线流程图,在线思维导图 Spring中到底有几种依赖注入的方式&#xff1f; 首先分两种&#xff1a; 手动注入自动注入 手动注入 在XML中定义Bean时&#xff0c;就是手动注入&#xf…...

Spire.Office for .NET 8.10.2 同步更新-Crk

Spire.Office for .NET是 E-iceblue 提供的企业级 Office .NET API 的组合。它包括Spire.Doc、Spire.XLS、Spire.Spreadsheet、Spire.Presentation、Spire.PDF、Spire.DataExport、Spire.OfficeViewer、Spire.PDFViewer、Spire.DocViewer、Spire.Barcode和Spire.Email。Spire.O…...

MFC 基础篇(一)

目录 一.SDK编程 二.为什么要学MFC&#xff1f; 三.MFC能做什么&#xff1f; 四.MFC开发环境搭建 五.MFC项目创建 六.消息映射机制 一.SDK编程 Application Programming Interface 应用程序编程接口。 Software Development Kit 软件开发工具包&#xff0c;一般会包括A…...

Android技术-修改SO导出符号

背景 经常在使用第三方SDK的时候会莫名其妙报错&#xff0c;其中最常见的一种就是SO符号冲突&#xff0c;比如libA.so静态链接了libC.a,而libB.so动态链接了libC.so。这样便会导致符号冲突。又或者在使用不同版本的动态库&#xff0c;也会造成符号冲突。 报错案例 案例1 DEB…...

flutter 打包apk

Flutter项目打包生成APK_flutter打包apk_文阿花的博客-CSDN博客 关于iconData可能出现的错误&#xff1a; flutter build apk 打包报错调试过程 - 掘金 (juejin.cn) 使用命令行&#xff1a;flutter build apk --no-tree-shake-icons...

Halcon如何使用SaperaLT库连接dalsa相机

halcon安装好的时候&#xff0c;没有带SaperaLT的采集库&#xff0c;需要额外在Halcon官网下载此库。 以下是halcon官网下载此库的链接。官网需要注册才可以下载。 https://www.mvtec.com/downloads/interfaces?tx_mvtecproduct_extensiondownloadlist%5Bfilter%5D%5B0%5Dma…...

Vue 嵌套路由 多级路由规则

套娃路由 routes:[{path: /login,component: Login},{path: /user,component: User,children:[{ path: test, component: Test },{ path: test2, component: Test2 },]}]子路由不需要加/ 在父组件 子路由不需要加/ 需要带上父亲的路由路径 <router-link to"user/test…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...