十进制负数转换为二进制、八进制、十六进制的知识分享

下面是关于“十进制负数转换为二进制、八进制、十六进制”的详细讲解。

一、前置知识

在进行负数的进制转换前,需要了解以下几点:

1.原码

原码是一个二进制数的最高位表示这个数的符号,为 0 代表正数,为 1 代表负数。其余各位位数表示这个数的绝对值的二进制数。如以下几个数的原码:
+1 的原码:00000001
-1 的原码:10000001
+5 的原码:00000101
-5 的原码:10000101

2.反码

反码和原码一样,最高位表示符号,其余各位表示数值。对于正数而言,反码与原码相同,对于负数则是在原码的基础上,各位取反(0变为1,1变为0)。如以下几个数的反码:
+1 的反码和原码相同:00000001
-1 的反码:11111110
+5 的反码和原码相同:00000101
-5 的反码:11111010

3.补码

补码是对反码进行修正,使得减法能够转化为加法,减法的得出的结果直接是补码。对于正数而言,补码与原码相同,对于负数则是在反码的基础上,末位加 1。如以下几个数的补码:
+1 的补码和原码相同:00000001
-1 的补码:11111111
+5 的补码和原码相同:00000101
-5 的补码:11111011

二、二进制转换

在了解了原码、反码、补码的概念后,我们可以开始进行负数的二进制转换。

1.将负数的补码取反

将十进制负数转换为二进制,需要先得到其补码。对于负数补码,按位取反,将二进制 0 和 1 互换即可。例如 -5 的补码为:1111 1011,其反码为 1000 0100。

2.将补码加 1

将补码进行加 1 操作,结果就是负数的二进制表示。例如 -5 的反码为 1000 0100,加 1 后即为 1000 0101。

举个例子,如果我们想将十进制的 -9 转化为二进制数表示。其绝对值 9 的二进制为 1001。加上符号位后,得到原码 1001。其反码为 1111(1001取反),补码为 0001,然后按照上述的步骤,将补码取反并加 1,得到 -9 的二进制表示为 111110111。

三、八进制转换

以下是将十进制负数转换为八进制数的步骤。

1.将负数转换为二进制

使用前面讲解的步骤,将十进制负数转化为二进制。

2.若二进制数的位数不是 3 的倍数,前面补足 0

例如,将负数 -15 转换为二进制为 1111。由于 1111 的位数不是 3 的倍数,需要在前面补足 0,变成 011 111。

3.将二进制转换成八进制

按照每三位分组的规则进行转换,即 011 111 的八进制表示为 57。

举个例子,如果我们想将负的十进制数 -37 转化为八进制表示。其绝对值为 37,转换为二进制数的结果是 100101,对齐到三位,前面加 0,即 100 101,转化为八进制表示后即为 045,加上负号,表示为 -45。

四、十六进制转换

以下是将十进制负数转换为十六进制数的步骤。

1.将负数转换为二进制

使用前面讲解的步骤,将十进制负数转化为二进制。

2.若二进制数的位数不是 4 的倍数,前面补足 0

例如,将负数 -15 转换为二进制为 1111。由于 1111 的位数不是 4 的倍数,需要在前面补足 0,变成 1111 0000。

3.将二进制转换成十六进制

按照每四位分组的规则进行转换,即 1111 0000 的十六进制表示为 F0。

举个例子,如果我们想将负的十进制数 -100 转化为十六进制表示。其绝对值为 100,转换为二进制数的结果是 1100100,对齐到四位,前面加 0 即可,即 0110 0100,转化为十六进制表示后即为 64,加上负号,表示为 -64。

【示例说明】如果我们要把 -34 转换成八进制,我们可以把 -34 的绝对值转换成二进制 100010,前面补足成 001 000 010,然后按照每三位分组的规则进行转换,即 001 000 010 的八进制表示为 042,所以 -34 转换成八进制表示为 -042。

【示例说明】如果我们要将 -154 转换成十六进制,我们先将其转换成补码,即先将绝对值转换为二进制数 1001 1010,再将其转换为反码 1110 0101,最后将其转换为补码 1110 0110。再按照十六进制转换规则,对齐成 1110 0110 的十六进制表示为 E6,所以 -154 转换成十六进制表示为 -E6。

以上内容就是将十进制负数转换为二进制、八进制、十六进制的知识分享,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:十进制负数转换为二进制、八进制、十六进制的知识分享 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 基于C#实现的HOOK键盘钩子实例代码

    下面我将为你详细讲解如何基于C#实现HOOK键盘钩子实例代码。 1. 了解HOOK键盘钩子 首先,我们要了解一下HOOK键盘钩子。HOOK钩子是一种实现事件过滤或拦截的机制。HOOK键盘钩子可以用于捕获用户键盘操作。通过HOOK键盘钩子,我们可以在用户按下键盘时获取并处理这些按键信息。 2. 实现HOOK键盘钩子 接下来,我们将实现HOOK键盘钩子,以获取用…

    C# 2023年6月7日
    00
  • C#并行编程Task类用法介绍

    标题:C#并行编程Task类用法介绍 什么是Task类? Task类是C#并行编程中最重要的类之一,它可以用来表示一个异步操作或者一组异步操作,并且可以方便地实现并行编程。 如何使用Task类? 使用Task类有以下几个基本步骤: 步骤一:定义异步任务 需要定义一个表示异步任务的委托,例如: Func<int, int> computeDeleg…

    C# 2023年5月15日
    00
  • .NET Core3.0 日志 logging的实现

    在.NET Core 3.0中,日志记录(logging)是一项非常重要的任务,它可以帮助您跟踪应用程序的运行情况并诊断问题。在本攻略中,我们将详细讲解.NET Core 3.0中日志记录的实现,并提供两个示例说明。 步骤一:安装NuGet包 要使用.NET Core 3.0中的日志记录功能,您需要安装以下NuGet包: Microsoft.Extensio…

    C# 2023年5月17日
    00
  • C#生成随机验证码代码分享

    下面是关于C#生成随机验证码的完整攻略。 一、生成随机验证码的基本思路 要生成随机验证码,我们的基本思路是: 定义一个包含所有可能字符的字符串; 随机生成一组字符组合成随机字符串; 显示生成的随机字符串。 二、生成随机验证码的详细步骤 下面我们来详细讲解每一步实现的具体内容。 2.1 定义包含所有可能字符的字符串 我们可以定义一个字符串变量,包含所有可能作为…

    C# 2023年6月3日
    00
  • Asp.net 通用万级数据分页代码[修正下载地址]

    Asp.net 通用万级数据分页代码是一个用于实现数据分页的工具库。下面将给出该工具库的详细攻略: 安装 可以通过Nuget进行安装,输入以下命令即可: Install-Package AspNetPager 安装完成后可以通过以下命名引用Asp.net分页控件: using Wuqi.Webdiyer; 使用方法 在前端页面中添加控件 在前端页面中引用控件…

    C# 2023年5月31日
    00
  • c# winform 关闭窗体时同时结束线程实现思路

    一、背景 在使用C# Winform编写程序时,有时候我们需要在关闭窗体的时候同时结束线程。但是在代码实现中,由于线程和UI控件属于不同的线程,因此需要注意一些细节问题。下面是具体的实现思路。 二、实现思路 1.启动线程 我们需要在用户打开窗体的时候启动线程。这个步骤可以放在窗体的Load事件中: private Thread workThread; pri…

    C# 2023年6月7日
    00
  • C# 调用Delphi dll 实例代码

    下面是“C# 调用 Delphi dll 实例代码”的完整攻略: 一、前置条件 在开始之前,要确保你已经安装好了以下工具: 1.安装好了 Delphi 开发工具。 2.安装好了 Visual Studio 开发工具。 二、制作 Delphi 所需的 DLL 1.打开 Delphi 开发工具,新建一个控制台应用程序。 2.在 Delphi 的项目属性中,将项目…

    C# 2023年6月7日
    00
  • Unity Pro 2018.2安装图文详细教程(附安装教程+新功能)

    UnityPro 2018.2安装图文详细教程 步骤一:下载Unity安装包 打开Unity官网,链接:https://unity.com/ 点击右上角的“Get Started”按钮,在下拉菜单中选择“Download Unity” 在下载页选择Unity版本,这里选择“Unity 2018.2.0f2 Personal(个人版)” 如果需要,可以在选项中…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部