原码 反码 补码的学习和一些问题

2022/9/12 23:26:00

本文主要是介绍原码 反码 补码的学习和一些问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

原码 反码 补码的学习:

  原码是十进制数据的二进制表现形式,最左边的是符号位,0为正,1为负,在原码中,8bit为一个字节,能表示的最大值为127,最小值为-127。原码中的10000000是-0,10000000加1之后的结果是-1,也就是说,当原码的首位是1时,加1是向数轴的负方向加1,也就是-1.利用原码正数计算是不会出现问题的,但是如果对负数计算那么实际的结果和我们的预期是相反的,反码就是这样产生的,正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变为1,1变为0,例如-56,其原码为10111000,反码是在原码的基础上符号位不变,后面的数0变1,1变0,-56的反码为11000111,-56+1的结果是-55,-56反码加1的结果为11001000,转换过来为001101111也就是55的原码,将首位变成1,就变成101101111,再变成反码就是11001000,这样利用反码就可以解决负数的计算问题,但是当用-1的反码相加时,得到的结果是11111111,其原码是10000000,也就是-0,也就是0。当-0再进行+1的操作时,原码变00000000,也就是+0,这时候就不对了,所以跨0的时候的相加就会有问题,会有一个误差,由于有两个0,所以当实现跨0的操作时,数会有一个数的误差,补码就这样诞生了,补码就是反码错开了一位,例如-1的反码为11111110,它的补码为11111111,补码要在反码的基础上再加1,正数的反码和补码是一样的,不会发生变化。在计算机当中数字的计算、存储都是以补码的方式进行的,因此,-127的补码后面会空出1位,即10000000,这多出来的一个数就是-128,它没有原码和反码,只有补码,所以我们说:一个字节能存储的最大值是127,最小值是-128。通过补码运算,可以把减法运算变成加法运算,而乘法可以用加法来做,除法可以转变成减法。对计算机来说,这是很有意义的。

课堂上的问题:

  课堂上,建民老师让我们做了一个题目:输出计算题。在一开始我是手足无措的,虽然知道随机数的函数,也知道如何输出,但是由于只是知道,没有足够的实操经验,一开始并不知道怎么做,在经过思考后,才把最开始的一阶段做出来,做出来后,第二阶段又犯了难,最基础的按个数输出很简单,但是如何避免重复就比较困难,之后也是通过很多项步骤才解决,再之后就是最后的第三项了,现在看来那个题目其实并不难,循环判断即可,但是当时的我脑子里总是空白,不知道如何继续,最后通过很多重复的步骤才把题目做完,很多情况都是穷举,把所有的情况列出来再随机输出,很浪费时间,工程量也很大,说到底还是对编程不熟练,没有对自己的代码有一定的规划,在编程时脑子不清晰,对函数的运用没有经验,最后导致做了很久才把程序写完,虽然最后正常运行了,但是编程的过程是十分不顺利的,这是非常不对的,所以,在课余时间加强编程的训练,这才能在编程时不会慌乱。



这篇关于原码 反码 补码的学习和一些问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程