在C中将十进制数转换为二进制数

2024-02-20

我正在尝试将十进制数转换为二进制数,但不知何故最终得到“随机”ASCII 符号作为输出。这是我的程序:

#include <stdio.h>

int main()
{
    int number = 0;
    int i = 50;
    char binary[10];
    printf("Enter a number: ");
    scanf("%d", &number);
     while(number!=0){
         binary[i] = number % 2;
         i--;
         number = number / 2;
    }
    printf("\n%s", binary);

    return 0;
}

您的代码存在多个问题(没有具体顺序,但我发现了它们):

  • 您正在初始化一个charint在线binary[i] = number % 2;您应该正确地将整数转换为字符,如下所示:

    binary[i] = '0' + (number % 2);
    
  • 你正在写printf("\n%s", binary); where binary is a char[10],因此不一定以空终止。您应该再添加一个字符binary并将其初始化为\0:

    char binary[11];
    binary[10] = '\0';
    
  • 您错误地初始化了数组:您从i = 50 and binary[10]。您应该添加一个常量并使用它两次:

    #define MAX_SIZE 32
    int i = MAX_SIZE - 1;
    char binary[MAX_SIZE + 1];
    binary[MAX_SIZE] = '\0';
    

    请注意-1你忘记了,这避免了你在字符串末尾写入,并且+1这基本上是最后一个问题

  • 您正在阅读一本int并尝试获取其二进制表示形式;但负值的(真正的)二进制表示通常不是您所期望的。更喜欢阅读unsigned int:

    unsigned int number;
    scanf("%u", &number);
    
  • 你可以替换number % 2 with number & 1 and number /= 2 with number >>= 1;这更准确地代表您正在运行的(二进制)操作number。此外,这实际上应该在负整数上正确工作,而你的版本不应该(未经测试,无论如何你通常没有理由想要获得负整数的二进制表示):

    binary[i--] = '0' + (number & 1);
    number >>= 1;
    
  • 您在数字为零后停止,但这意味着您不一定填写binary大批;这意味着您可能在开头有未初始化的字符binary(在调试模式下的 VC++ 上,IIRC 应显示为ÿ人物)。您应该在循环之后添加类似这样的内容以填充数组:

    while (i >= 0)
        binary[i--] = '0';
    

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在C中将十进制数转换为二进制数 的相关文章

  • #include 在 ubuntu 中“没有这样的文件”

    当使用 g std c 0x Wall test cc o hello 编译时 输出致命错误 cstdatomic 没有这样的文件或直接 哪里不见了 包含内容应该是 include
  • 通过 VLA 数组跳转到 goto 时出现分段错误

    以下示例演示了该问题 include
  • C# AES Rijndael - 检测无效密码

    我正在使用 Rijndael 加密程序中的一些敏感数据 当用户输入错误的密码时 大多数情况下CryptographicException抛出消息 填充无效且无法删除 然而 CryptStream 不会抛出密码错误的异常 而是返回错误解密的流
  • 无法对 ContainsGenericParameters 为 true 的类型或方法执行后期绑定操作

    我有一个适用于所有实体的扩展 public static class EntityBaseExtensions public static T Clone
  • ZedGraph 缩放和调整大小

    当我绘制图形 放大和缩小并重新绘制图形时 图形的位置不会改变 我想要做的是 每当重新绘制数据时 视图都会更改以查看所有图形数据 如果您在重绘之前放大或缩小 这似乎会被禁用 Thanks 设置属性 IsZoomOnMouseCenter对于控
  • 当“”可以分配给std::string时,为什么有“clear”方法?

    一个可以用string clear函数清空字符串 也可以使用空双引号 来执行此操作 有什么不同 当您分配一个空字符串时 编译器必须在数据部分存储一个空的 C 字符串 并创建代码以将指向它的指针传递给赋值运算符 然后 赋值运算符必须从数据部分
  • C++17 中带有 noexcept 的 std::function

    在 C 17 中noexcept 已添加到类型系统中 http www open std org jtc1 sc22 wg21 docs papers 2015 p0012r1 html void r1 void f noexcept f
  • 函数原型和数组参数

    我正在学习 C 语法 并且已经开始研究数组了 我想问你一个问题 但首先让我回顾一下 这样我就知道我已经弄清楚了 我知道您可以使用以下语法将变量定义为数组 name
  • 如何获取任意类型的默认值

    在 C 中我可以写这样的东西 class AnyThing
  • 设置外部应用程序焦点

    在 VB NET 中 您可以使用以下命令将焦点设置到外部应用程序 AppActivate Windows Name or AppActivate processID As Integer 现在 如果您这样做 则效果很好 Dim intNot
  • F# 内联如何工作?

    对于 F 我的理解是您可以使用 inline 关键字在调用站点执行类型专门化 那是 val inline a gt b gt c when a or b static member a b gt c 约束条件是 a or b必须有一个静态成
  • 有哪些 API 可在 Windows 中使用 C# 配置扬声器设置?

    我环顾了很多不同的地方 但似乎找不到一个简单的方法来做到这一点 我在 Windows 7 中有多个声卡 并使用 HDMI 将声音输出到我的 AVR 放大器 我遇到的问题是 当放大器关闭时 它会导致窗口丢失扬声器配置 所以我想做的是编写一个小
  • 使用成员函数作为 std::shared_ptr 的自定义删除器时出现问题

    我正在尝试弄清楚如何将 std shared ptr 与自定义删除器一起使用 具体来说 我将其与 SDL Surface 一起使用 如下所示 std shared ptr
  • 适用于 Windows 的键值数据库?

    除了 MongoDB 和 Memcached 之外 Windows 上还运行哪些键值存储 我见过的大多数似乎只能在 Linux 上运行 Hypertable Redis Lightcloud 相关链接 是否有经过商业验证的云存储 Key g
  • 在标准库中静态链接时如何支持动态插件?

    假设一个应用程序myapp exe是使用构建的g 它使用标志 static libstdc 这样就可以安装在没有环境的情况下libstdc so myapp exe还添加了对某些功能的插件支持plugf可以通过动态加载dlopen来自共享库
  • 如何忽略搜索条件中的空属性

    我有一个不好的要求要做 无论如何 我必须在我的应用程序中实现它 我有一个Track class public class Track public string Name get set public string City get set
  • 复杂的 C 声明

    我刚刚在互联网上浏览了一些代码 发现了这个 float foo SIZE SIZE 我如何阅读这份声明 是否有一套特定的规则来阅读如此复杂的声明 我有一段时间没做这个了 从 开始foo然后向右走 float foo SIZE SIZE fo
  • C语言:如何获取使用strtok()一次后剩余的字符串

    我的字符串是 A B C D E 分隔符是 如何获取执行 strtok 一次后剩余的字符串 即 B C D E char a A B C D E char separator char b strtok a separator printf
  • 将函数作为函数参数传递

    Unity C 似乎无法识别Func lt gt 作为函数委托的符号 那么 如何将函数作为函数参数传递呢 我有一个想法Invoke functionName 0 可能有帮助 但我不确定它是否实际上立即调用该函数 或者等待帧结束 还有别的办法
  • 通过 OCI 调用 Oracle 存储过程并使用 C++ 中的 out ref 游标返回结果

    我想使用 OCI 接口从 C 调用 Oracle 存储过程 并使用 out SYS REF CURSOR 作为过程的参数来迭代结果 我是 OCI 新手 所以可能会遗漏一些简单的东西 大部分代码取自这里 我的存储过程是 CREATE OR R

随机推荐

  • MongoDB 如何评估多个 $or 语句?

    MongoDB 将如何评估此查询 db testCol find or a 1 b 12 b 9 c 15 c 10 d foo 当扫描文档中的值时 如果第一个 OR 语句为 TRUE 其他语句也会被评估吗 从逻辑上讲 如果 MongoDB
  • 如何防止 UIButton 在按下时突出显示?

    When an UIButton按下后 正常情况是它会突出显示 即阴影层会覆盖图像 有没有办法防止这种情况发生 有没有一个属性可以处理这个问题 通常 您不会使用 Xcode 按按钮 而是使用手指 或鼠标 但撇开挑剔不谈 adjustsIma
  • 使用 JQuery Mobile 向上或向下移动控制组中的多个链接

    这是我上一个问题的后续问题 控制组 JQuery Mobile 上有 3 个水平按钮 多行 https stackoverflow com questions 26088729 controlgroup 3 buttons horizont
  • 使用 JS 在 Google Apps 脚本文档中查找未知字符串并将其更改为大写

    我写在Fountain markdown http fountain io http fountain io 在谷歌文档中 喷泉是用来写剧本的 我想通过自动大写某些元素 打开或使用按钮等 使喷泉中的书写更加友好 这是一个格式正确的剧本 在喷
  • 哪个 django OpenID 库可与新的 Google OpenID 配合使用

    由于 Google 弃用了 OpenID 2 0https developers google com accounts docs OpenID2 https developers google com accounts docs Open
  • 如何使符号计算中的所有低值都变为零?

    如何将 SymPy 表达式中的所有低值设为零 例如我的结果是 1 0 a1 cos q1 6 12e 17 a2 sin q2 a3 sin q2 q3 a4 sin q2 q3 q4 sin q1 1 0 a2 cos q2 a3 cos
  • Python中计算二叉树的深度

    我是编程新手 正在尝试计算 Python 中二叉树的深度 我相信我的错误是因为深度是 Node 类的方法而不是常规函数 我正在尝试学习OOP并希望使用一种方法 这可能是一个新手错误 这是我的代码 class Node def init se
  • OpenCL 在线编译:从 cl::program 或 cl::kernel 获取程序集

    我正在使用 OpenCL 运行内核基准测试 我知道我可以使用 OpenCL 供应商提供的各种工具离线编译内核 即ioc64 or poclcc 问题是我得到的性能结果无法用这些工具的汇编 OpenCL 运行时开销或类似的来解释 我想看到由我
  • 我无法删除 Azure AD 门户中的本机应用程序注册

    我只想删除出于测试目的而创建的 AD 应用程序注册 我无法删除它 因为删除按钮呈灰色 在我删除另一个未使用的应用程序之前没有任何问题 有什么建议么 游戏有点晚了 但是当尝试上述步骤时 它们对我不起作用 总是被禁用 并且由于某种原因 我无法将
  • 整个计算机处于 Git 状态未跟踪文件

    我是 git 新手 我想我不小心克隆到了根目录中 当我提交一个文件 index html 时 我注意到我的整个计算机 我的桌面 我的文档等 都在未跟踪的文件中 我删除了存储库 并且想删除所有未跟踪的文件 显然不想删除计 算机中的所有内容 我
  • 在 Safari 中打开 WebView 链接

    我正在 Cocoa 中开发一个应用程序 我想知道是否有一种方法 如何使我的 webview 中单击的任何链接在 Safari 或默认浏览器 中启动 提前致谢 我自己刚刚遇到了这个问题 并通过以下方式解决了它 我的主控制器对象被设置为 Web
  • 捕获 C++ 库崩溃的一致方法

    我浏览了不同的网站 除了那些似乎不起作用的网站之外 找不到这个问题的任何答案 正如标题所示 我正在尝试找到一种方法来捕获我正在处理的库是否崩溃 我有一个 Root 类 它保存我的库中的许多管理器样式类的实例 并在其析构函数中释放这些实例 当
  • 在reactjs中悬停时显示组件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我创建了几个带有特定内容标题的部分 我想在悬停在不同部分上方时显示一个简短的预览 有谁知道如何创建一个具有条件渲染反应组件的hover
  • 冒泡排序双向链表

    我的双向链表冒泡排序功能有问题 当我以单链接方式对节点进行排序时 仅使用 gt next 它可以工作 但我无法使其与 gt prev 指针一起使用 这是我正在使用的代码 void sort int count struct data tmp
  • 无法更新 Dynamodb 表,出现 ValidationException

    我需要仅使用分区键来更新我的 dynamodb 表 但我得到了验证异常 我创建了一个包含 3 个字段的表 id 分区键 名称 排序键 age 然后我尝试仅使用 id 更新年龄字段 尝试将年龄 30 修改为 40 这是我的代码 var AWS
  • 如何调试 gulp-sourcemaps 不执行任何操作?

    我有一个相当标准的用例gulp sourcemaps https github com floridoo gulp sourcemaps https github com floridoo gulp sourcemaps gulp src
  • SQLAlchemy 获取匹配查询的每一行并循环遍历它们

    我是 Python 和 SQLAlchemy 的新手 我一直在尝试从数据库中检索内容 并且每次都有效 但我有点不确定当 select 语句将返回多行时该怎么做 我尝试使用一些在开始 SQLAlchemy 之前有效的旧代码 但是db是一个 S
  • Google PHP API 客户端:CA 证书错误

    我正在尝试与 Google PHP API 客户端交互 但 Google 提供的证书存在问题 谷歌错误 SSL certificate problem verify that the CA cert is OK Retrying with
  • 在 Caliburn.Micro 中如何将操作绑定到嵌套的 ViewModel 方法?

    我有一个 WPF 应用程序 由 Caliburn Micro 提供支持 视图模型优先方法 有一种命令栏类型的控件 其CommandBarView xaml并绑定命令栏视图模型 命令栏虚拟机包含许多嵌套虚拟机 每个虚拟机对应一个按钮控件 所有
  • 在C中将十进制数转换为二进制数

    我正在尝试将十进制数转换为二进制数 但不知何故最终得到 随机 ASCII 符号作为输出 这是我的程序 include