1. 首页 > 快讯

带您快速了解原码、反码、补码,并完成十六进制转换

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

而基数转换也是一个关键点。无论是大学期末考试,还是找工作时的面试题,这都是需要了解的知识。今天冷月就带大家整理一下原码、反码、补码的相关知识,讲解基数转换的方法。

原始代码

原码也称为符号绝对值码;最高位0代表正数,最高位1代表负数,其余二进制位为该数绝对值的二进制位。也就是说,原码的最高位代表是正数还是负数,其余数字则代表具体值。

例如:假设:我们用8位二进制来表示一个数字,+11的原码是00001011,-11的原码是10001011

原码简单易懂,但其加减运算较复杂,且零的表示方式不唯一,因此该值的原码并不直接存储在计算机中。

反码

补码通常用于求原码的补码或从补码求原码的转移码。直接将二进制位按位取反。但补码的运算并没有重复,也没有在计算机中得到应用。

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

补充

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

带您快速了解原码、反码、补码,并完成十六进制转换

如下图:

8421 法案

一种将二进制转换为十六进制的简单方法。简单来说,十六进制表示16种状态,而用二进制表示16种状态,需要4位。因此,我们用4位二进制数来表示1位十六进制数,其余数字用0填充。

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

如下图:

基数转换(补码)

给定十进制,找到二进制:

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

求负整数的二进制(补码)码:先求负数对应的正整数的二进制补码,然后将所有位取反,最后加1。如果位数不够,则在左边加1。

找到零的二进制(补码)数:它全是零。

#includestdio.h

带您快速了解原码、反码、补码,并完成十六进制转换

/*

*/

int main()

{

printf('%#X\n',18); //输出0X12

printf('%#X\n',-18); //输出0XFFFFFFEE

返回0;

}

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

求给定二进制补码的十进制数:

如果第一位是0,则表示是正整数。使用普通方法即可找到;如果第一位是1,则表示是负整数。将所有位反转并在末尾加1。结果数是负数的绝对值;如果全部为0 ,则对应的十进制数为0

带您快速了解原码、反码、补码,并完成十六进制转换

#includestdio.h

/*

*/

int main()

{

printf('%d\n',0X12); //输出18

printf('%d\n',0XFFFFFFEE); //输出-18

返回0;

}

用户评论

逃避

太棒了!终于搞懂原码、反码和补码之间的关系了!

    有8位网友表示赞同!

有阳光还感觉冷

文章很清晰,讲得通俗易懂,终于理解了十六进制转换的原理。

    有14位网友表示赞同!

夏以乔木

这篇文章简直是拯救了我,之前对补码总是理解不了,现在终于搞懂了。

    有12位网友表示赞同!

夏日倾情

强烈推荐!看完这篇文章,对原码、反码和补码有了全新的认识。

    有7位网友表示赞同!

温柔腔

写的太好了,不仅解释了原理,还用例子说明,更容易理解。

    有14位网友表示赞同!

惯例

终于找到一篇讲得明白的文章了,以后再也不怕补码了!

    有17位网友表示赞同!

£烟消云散

原来十六进制转换这么简单,这篇文章让我豁然开朗。

    有8位网友表示赞同!

拥抱

感谢作者,文章内容很实用,学到了很多新知识。

    有9位网友表示赞同!

未来未必来

终于找到一篇能让我理解原码、反码和补码的文章了。

    有16位网友表示赞同!

惦着脚尖摘太阳

这篇文章简直是编程学习的宝典!

    有15位网友表示赞同!

醉红颜

文章结构清晰,内容完整,非常适合初学者学习。

    有18位网友表示赞同!

微信名字

终于能理解原码、反码、补码和十六进制转换之间的联系了。

    有14位网友表示赞同!

红尘滚滚

作者用通俗易懂的语言解释了复杂的知识,非常棒!

    有17位网友表示赞同!

烟雨离殇

这篇文章让我对计算机底层有了更深入的了解。

    有20位网友表示赞同!

万象皆为过客

强烈推荐给所有想要学习原码、反码、补码和十六进制转换的人。

    有8位网友表示赞同!

一点一点把你清空

文章内容很丰富,涵盖了所有重要的知识点。

    有12位网友表示赞同!

_心抽搐到严重畸形っ°

这篇文章让我对计算机的运行机制有了更深的认识。

    有19位网友表示赞同!

寒山远黛

以后再也不用担心十六进制转换的问题了,谢谢作者!

    有14位网友表示赞同!

迷路的男人

终于找到了一篇能让我理解原码、反码、补码和十六进制转换的良心文章!

    有15位网友表示赞同!

折木

强烈推荐这篇文章,对于学习计算机基础知识非常有帮助。

    有17位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/4117.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666