首页 > 编程知识 正文

16的原码反码补码(补码原码反码怎么转换)

时间:2023-05-04 16:32:45 阅读:105149 作者:2776

我的很多朋友在学习计算机相关课程的时候经常会听到原码、反码、补码等词汇,但是很少有人能理解它们是为了什么。但是,随着编程的深入,我们知道计算机中只能存储0和1的二进制代码,所有的数据类型最终都会转换成二进制代码,然后存储在内存中。因此,了解这些知识可以帮助你理解数值是如何存储在内存中的。

而小数转换也是一个关键点,无论是大学的期末考试还是求职的面试题,这都是需要理解的知识。今天冷月就带大家整理一下原码、补码的相关知识,讲解十进制转换的方法。

原码形式

原始代码也叫符号-绝对值代码;最高位0表示正数,最高位1表示负数,其余二进制位是数字绝对值的二进制位。也就是说,原始代码的最高位代表它是正的还是负的,而剩余的数字代表特定的值。

例如,如果我们用8位二进制表示一个数字,那么11的原始代码是00001011,而-11的原始代码是10001011。

原码简单易懂,但其加减运算复杂,零的表示也不是唯一的,因此不与数值的原码直接存储在计算机中。

基数减一补码

反码通常是一种过渡码,用于从原始码中寻找补码或从补码中寻找原始码。一点一点地反转直接二进制。但是,反码的操作是不重复的,在电脑上是不用的。

假设我们用8位二进制来表示一个数,11的反码是11110100,而-11的原码是01110100。

补充

在计算机系统中,数值总是用补码来表示和存储。原因是有了补码,符号位和数值域可以统一处理;同时,加减法也可以统一。

如下图所示:

821法律

将二进制转换为十六进制的简单方法。简单来说,十六进制意味着16个状态,而二进制数字需要4位数字来表示16个状态。所以我们用4位二进制数来表示1位十六进制数,不足的数字前面加零。

对应的4位二进制数在十进制中等于8 4 2 1。

如下图所示:

基数转换(补码)

众所周知,十进制寻道二进制:

求正整数的二进制(补)数:除2取余数,直到商为0,余数逆序排列。

求负整数的二进制(补码):先求负数对应的正整数的二进制补码,然后将所有的位反相,最后加1,位数不够时向左加1。

寻零二进制(补码):全为零。

# includestdio.h

/*

微信官方账号:高级冷月

*/

int main()

{

printf('%#Xn ',18);//输出0X12

printf('%#Xn ',-18);//输出0xfffffe ee

返回0;

}

我们来分析一下上面的操作。我们知道正数的原码、补码、补码都是一样的。在C语言中,int类型在内存中分配4个字节,即32位。在C语言中,二进制不能直接输出,所以我们输出十六进制。如下图所示:

十进制的已知二进制补码:

如果第一位数字为0,表示是正整数,用普通方法计算;如果第一个数字是1,则表示它是负整数。如果所有的数字都是反相的,并且在末尾加上1,则得到的数字就是负数的绝对值。如果都是零,对应的十进制数为零。

# includestdio.h

/*

微信官方账号:高级冷月

*/

int main()

{

printf('%dn ',0X12);//输出18

printf('%dn ',0xfffffffee);//输出-18

返回0;

}

上述操作被称为十进制和二进制的逆过程。计算过程如下:

如果这篇博文对你有帮助,你可以给冷月一个赞或者加一个关注!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。