`

二进制基础(负数转二进制)

阅读更多

比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:

00000000 00000000 00000000 00000101

5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。

现在想知道,-5在计算机中如何表示?

 

在计算机中,负数以其正值的补码形式表达

什么叫补码呢?这得从原码,反码说起。

 

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

比如 00000000 00000000 00000000 00000101 是 5的 原码。

 

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)

比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。

称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。

反码是相互的,所以也可称:

11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。

 

补码:反码加1称为补码。

也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

那么,补码为:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

 

所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。

 

再举一例,我们来看整数-1在计算机中如何表示。

假设这也是一个int类型,那么:

 

1、先取1的原码:00000000 00000000 00000000 00000001

2、得反码:     11111111 11111111 11111111 11111110

3、得补码:     11111111 11111111 11111111 11111111

 

可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。

使用Windows7的用户可以使用自带的计算器来帮助学习十进制、八进制、十六进制与二进制间的相互转换,非常方便。






.
分享到:
评论

相关推荐

    java 进制转换,二进制 十进制 十六进制 正数 负数的进制等等!.docx

    CPU通常使用二进制处理数据,而人类更习惯于十进制,程序员尤其是底层开发者则常使用十六进制。八进制在某些旧的计算机系统和编程语言中也有使用,但相对较少。 在Java中,我们可以使用内置的方法进行各种进制之间...

    负数二进制转十进制以及还原十进制转二进制

    MATLAB中负数8位二进制与10进制之间的转换

    1.二进制字符串转十进制数值_labview_二进制转十进制_

    在实际应用中,可能还需要考虑一些额外的问题,比如数据验证(确保输入的是有效的二进制字符串)、错误处理(处理除法溢出、负数等特殊情况)、性能优化(对于大量数据的快速转换)等。这些都是提高代码质量、可靠性...

    Matlab负数十进制转二进制代码

    Matlab 负数十进制转二进制代码 Matlab 是一个功能强大的编程语言,广泛应用于科学计算、数据分析和可视化等领域。在 Matlab 中,对十进制数的二进制表示是一个非常重要的操作。然而,Matlab 的内置函数 dec2bin ...

    处理负数,二进制最高位是1表示负数,0表示正数delphi

    在处理负数时,无论是从十六进制转二进制还是直接处理二进制,都要记住最高位的符号位规则。源代码中可能包含了这样的逻辑,首先将十六进制转换为二进制字符串,然后检查最高位,根据需要应用补码规则。这个过程可能...

    十进制二进制转换

    在计算机科学领域,数据通常以二进制形式...总之,理解并能够熟练进行十进制与二进制之间的转换是计算机科学基础知识的一部分。无论是手动转换还是编程实现,这都是一项重要的技能,尤其在理解和解决计算机科学问题时。

    负数的二进制算法.doc

    负数的二进制算法 负数的二进制表示形式是计算机科学中一个重要的概念。它可以帮助我们更好地理解计算机是如何存储和处理负数的。下面是关于负数的二进制算法的详细知识点: 一、正数的二进制表示形式 在计算机...

    java十进制转换二进制

    本篇文章将深入解析一个使用Java语言编写的程序,该程序能够将十进制正数和负数转换为二进制形式。通过分析代码逻辑、算法原理以及实现细节,帮助读者更好地理解十进制到二进制转换的过程。 #### 转换正数到二进制 ...

    float浮点数二进制表示转换[源代码]

    总的来说,理解浮点数的二进制表示是计算机科学中的基础概念,对于程序员和硬件工程师来说都非常重要。通过学习和实践,我们可以更深入地了解这个过程,并能运用到实际的项目开发中。在实际工作中,这样的知识可以...

    汇编语言 二进制数和十进制数相互转换

    首先,我们要理解二进制数系统,它是计算机内部运算的基础。二进制数由0和1组成,每一位代表2的幂次。例如,二进制数1011表示1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 8 + 0 + 2 + 1 = 11,即十进制中的11。 转换二进制到...

    (word完整版)Matlab负数十进制转二进制代码.doc

    Matlab 负数十进制转二进制代码 在 Matlab 中,进行十进制到二进制的转换可以使用 dec2bin 函数,但是该函数只能对正数进行转换。为了实现负数的十进制到二进制的转换,需要使用补码表示法。 在本代码中,我们编写...

    二进制十进制互转

    总的来说,理解并实现二进制与十进制之间的转换是编程基础的一部分,对于理解计算机底层运作原理和编写高效代码至关重要。在C++中,通过自定义函数或类,我们可以灵活地处理整数和浮点数的二进制与十进制转换,包括...

    2进制,16进制,10进制相互转化的c++算法

    例如,对于二进制负数,可以先将其转换为正数的补码形式,然后进行转换。同样,十六进制的负数也需要转换为其补码表示再进行转换。 总结,通过上述算法和方法,我们可以灵活地在二进制、十进制和十六进制之间进行...

    C++实现十进制转二进制运算(改进版)

    二进制是一种只使用0和1的数字系统,是计算机内部处理数据的基础。在二进制中,每一位的权重都是2的幂次,例如最右边的位(最低位)权重是2^0=1,向左依次是2^1、2^2等。 2. **十进制转二进制**: 通常,我们可以...

    浮点数与二进制转换工具

    二进制是计算机内部处理数据的基础,所有计算都是基于二进制的。浮点数到二进制的转换涉及到以下步骤: 1. **符号位**:浮点数的正负由最高位决定,0表示正数,1表示负数。 2. **指数位**:指数部分是偏移值,需进行...

    易语言十进制转二进制

    在易语言中,可以先将负数转换为其等值的正数的二进制表示,然后在其前面加上符号位,即1表示负数,0表示正数。 此外,易语言还提供了“二进制字符串取整数”函数,可以将二进制字符串转换回十进制数。这在进行数据...

    c++十进制和十六进制互换程序

    这些是编译后的二进制文件,可以直接在DOS环境下运行,无需再次编译源代码。用户可以通过命令行输入一个数,程序会自动进行相应的转换并打印结果。 为了确保程序在DOS环境中正常工作,开发者可能已经考虑了以下几点...

    用栈实现十进制转换成二进制(c语言)

    在计算机科学中,将十进制数转换为...但这个基本框架提供了一个使用栈实现十进制到二进制转换的基础。对于给定的压缩包文件“DataStack”,可能包含了实现这个功能的完整源代码或者测试数据,你可以进一步查看和学习。

    JAVA实现十进制整数(正负)转换为二进制输出

    任意输入一个十进制整数,包括正数负数,通过程序实现可以输出相应的二进制编码

    linux下int转二进制字符串的方法_int转二进制字符串的方法_QT_linux_

    首先,我们来看标题提到的"int转二进制字符串的方法"。在C++中,最常用的方法是通过位运算和循环来实现。一个简单的思路是利用位移操作符(`和`>>`)以及与操作符(`&`)来检查每个二进制位。以下是一个基本的示例:...

Global site tag (gtag.js) - Google Analytics