求补码的简便方法及byte溢出问题
来源:互联网 发布:圆形相片制作软件 编辑:程序博客网 时间:2024/06/05 15:37
今天兴起翻了翻Java课本看到这么一段话“要得到-8的补码,首先得到7的原码,然后将7的原码中的0变成1,1变成0,就是-8的补码”,以往求补码,都是遵循由原码得到反码,再由反码得到补码的步骤,这种方法引起了我的兴趣。
首先借助大神的博客补习一下原码反码补码的概念http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html。
另外要注意0的原码反码和补码,计算机辨认0需要分正0和负0,所以(8位表示,以下讨论皆为8位)原码:(+0)00000000 (-0)10000000 反码:(+0)00000000 (-0)11111111 补码:00000000,此时你可能疑惑,补码10000000表示的数是多少,不卖关子了,是-128,而-128没有原码和反码。
了解完背景现在正式分析:-1的原码为10000001,反码11111110,补码11111111。前边已经知道计算机中是用补码计算的,很容易知道-8+7=-1,即-8的补码+7的补码=-1的补码,7的补码就是7的原码,也就是-8的补码+7的原码=-1的补码,所以-8的补码+7的原码=11111111,显而易见7的原码中的0变成1,1变成0,就是-8的补码。这样一来求负数的补码可以借用比此负数绝对值小1的正数进行简便计算,即(|x|-1)的原码0变1,1变0。
由于计算机采用补码计算,产生了一些有意思的问题,如byte溢出问题,解决byte溢出问题可以通过补码按部就班的分析,也可以利用循环规律,这儿附另外一个大神总结的口算方法http://m.blog.csdn.net/article/details?id=44919993。
- 求补码的简便方法及byte溢出问题
- 求补码的简便算法
- 关于byte的溢出问题
- 求nextval数组值的简便方法
- java求负数补码的方法
- 补码运算溢出判断方法
- 求两个数最大公约数和最小公倍数的简便方法
- 求负数的补码
- windows堆栈溢出dword和byte的问题
- 一个防止溢出的求平均方法
- 求阶乘(防止溢出)的方法
- 补码加减运算及溢出判断
- 对于有几个家族这类问题的简便方法
- int转byte与补码的关系
- 原码、补码和用补码表示时的溢出
- 求负数补码及补码转为原码
- java中求两个数的最小公倍数,最大公约数的简便方法
- Java byte(short)溢出,口算方法
- 创建一个django项目
- Android开发:最全面、最易懂的Android屏幕适配解决方案
- JSP: 一个装配工的没落
- 解EXCEL VBA 密码的宏
- 谁是许式伟
- 求补码的简便方法及byte溢出问题
- 在atom中手动创建maven项目
- apach zeppelin中使用spark streaming:基本功能
- SpringBoot 开发使用thymeleaf模板开发html页面
- C++——构造高度平衡的BST,并按层序输出
- Java解惑学习有感(七)---更多的类之谜
- DataSet和XML格式间的相互转换 (转)
- koa2设置ejs为模板引擎,但是最终文件是.html
- plsql下面 没有connect as选择项