ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-12 12:00:22  阅读:216  来源: 互联网

标签:编程 反码 56 补码 127 原码


原码 反码 补码的学习:

  原码是十进制数据的二进制表现形式,最左边的是符号位,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。通过补码运算,可以把减法运算变成加法运算,而乘法可以用加法来做,除法可以转变成减法。对计算机来说,这是很有意义的。

课堂上的问题:

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

标签:编程,反码,56,补码,127,原码
来源: https://www.cnblogs.com/liurujun/p/16685530.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有