大家好,关于带您快速了解原码、反码、补码,并完成十六进制转换很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
而基数转换也是一个关键点。无论是大学期末考试,还是找工作时的面试题,这都是需要了解的知识。今天冷月就带大家整理一下原码、反码、补码的相关知识,讲解基数转换的方法。
原始代码
原码也称为符号绝对值码;最高位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;
}
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/99482.html
用户评论
醉婉笙歌
终于找到了解释原码、反码、补码的详细教程!一直觉得这些概念很抽象,看了你的讲解后感觉变得清晰多了,原来转码就是个这么简单的事情啊!我已经迫不及待地去实践一下了。
有14位网友表示赞同!
有一种中毒叫上瘾成咆哮i
这篇文章讲的太棒啦!把复杂的进制转换理论用通俗易懂的方式解释清楚了,而且图文并茂,很有帮助! 我之前对这类知识一点都不懂,现在终于理解了!
有17位网友表示赞同!
罪歌
原码、反码、补码,这个概念经常在计算机科学考试里出现,但是我总觉得自己没真正掌握住。看这篇博客后感觉明白了很多,还有一些练习题可以巩固学习,太棒了!
有13位网友表示赞同!
余笙南吟
我觉得这种解释方法还是挺容易让人理解的,不过对于学习计算机专业的同学来说,可能还需要更多的深入讲解,比如一些具体的应用场景和编程技巧。
有20位网友表示赞同!
花开丶若相惜
这篇博客终于解决了我的一个大烦恼!一直想学会进制转换,但总觉得很复杂。没想到原来这么简单!感谢作者的分享!
有20位网友表示赞同!
拽年很骚
这篇文章讲解得确实不错,把原码、反码、补码都解释得很清楚!我已经成功完成了简单的进制转换练习题了,感觉自己距离计算机专业更加近一步了。
有8位网友表示赞同!
青楼买醉
虽然文章写得好,但我觉得图示还是少了一些,例如在介绍补码的时候,可以加入一个具体的例子来说明如何进行补码的计算。这样更直观易懂。
有15位网友表示赞同!
箜明
作者的思路清晰,讲解也很详细,我以前对这些概念非常模糊,看了你的文章后感觉终于明白了! 现在可以去刷一些进制转换的题目加强巩固啦!
有13位网友表示赞同!
凝残月
这篇博客简直是学习计算机基础知识的福音! 原码、反码、补码都是必须掌握的概念,有了这个教程,我就能更快地入门了。感谢作者!
有5位网友表示赞同!
今非昔比'
这篇文章确实很有用,但我觉得可以加入一些编程语言的例子,比如 Python 中如何进行进制转换的实现过程,这样可以更直观地理解这些概念在实际应用中的意义。
有10位网友表示赞同!
纯真ブ已不复存在
我虽然对计算机原理不太熟悉,但是根据你的解释,我已经大致明白了原码、反码、补码的区别。感谢你用通俗易懂的方式讲解复杂的概念!
有19位网友表示赞同!
还未走i
感觉这篇博客讲得太简单了,对于想要深入了解这些概念的读者来说,可能不够全面。可以多加入一些理论基础和更复杂的应用场景。
有18位网友表示赞同!
生命一旅程
这个教程太棒了!让我终于能够理解原码、反码、补码的概念。我已经开始动手练习代码转换了,很有成就感呢!
有9位网友表示赞同!
命硬
虽然文章讲得通俗易懂,但我觉得可以添加一些互动环节,比如给读者一些练习题或思考题,这样可以更好地帮助他们巩固所学知识。
有20位网友表示赞同!
矜暮
我曾经也迷茫过原码、反码、补码的区别,还好找到了这篇博客!现在终于明白这些概念的意义了,感觉自己离计算机专业更近了一步。非常感谢作者!
有6位网友表示赞同!
放肆丶小侽人
希望以后还有更多关于计算机基础知识的科普文章。这样可以帮助更多的普通人理解和学习这个领域。
有20位网友表示赞同!