计算机内存对数字的存储方式——原码、反码、补码
来源:互联网 发布:ps游戏优化器 编辑:程序博客网 时间:2024/05/22 11:33
计算机在存储数字时,以最高位作为数值符号进行存储,0表示正数,1表示负数,同时,计算机的最小存储单位是8位
原码
所谓原码,就是将数值转化为二进制,如下将1、-1、0转为二进制
+1: 0000 0001-1: 1000 0001+0: 0000 0000-0: 1000 0000
如上,如果计算机使用原码进行存储数值,将会导致有两种0的结果。
此时计算1 - 1的结果:
// 以原码计算1 - 11 - 1 = 1 + (-1)+1: 0000 0001-1: 1000 0001 1000 0010 => -2
以上,发现以原码的方式存储除了会导致有两种0之外,连计算结果都不准确。因此,虽然原码更容易被人理解,但对于计算机来说,反而不好处理。
反码
反码是为了补码而产生的
- 先获取原码
- 正数的反码就是原码
- 负数的反码,是在原码的基础上,符号位不变,其他位取反
如下,求得+1、-1、+0、-0的反码
+1: 0000 0001 //正数的反码与原码相同-1: 1111 1110+0: 0000 0000-0: 1111 1111
如上,此时0依然有两种形式,此时计算1 - 1
// 以反码计算1 - 1+1: 0000 0001-1: 1111 1110 1111 1111 => -0
以上,发现以反码进行计算,计算结果正确,但是反码依然有缺陷,它还是有两种形式的0存在。
补码
获取原码
获取反码
正数的原码、反码、补码都是一致的
负数的补码,在反码的基础上+1
如下,求得+1、-1、+0、-0的补码
+1: 0000 0001-1: 1111 1111+0: 0000 0000-0:10000 0000
如上,发现-0的补码为10000 0000
,由于计算机的存储单位是8位,所以超过8位的高位部分将被丢弃,所以,真正的-0的补码为0000 0000
,与+0是一致的!
所以,补码的方式解决了存在两种0的问题,下面再看看补码的情况下,计算结果是否正确
+1: 0000 0001-1: 1111 1111 10000 0000 => 丢弃高位,最终结果为0000 0000,即0
运算结果正确!
嗯。
阅读全文
0 0
- 计算机内存对数字的存储方式——原码、反码、补码
- 关于计算机中数字存储方式-原码、反码、补码
- 计算机二进制存储原码反码补码
- 对计算机的原码,反码,补码的理解:
- 计算机的原码、反码和补码
- 计算机的原码, 反码和补码
- 计算机的原码, 反码和补码
- 计算机的原码, 反码和补码.
- 聊一聊计算机的原码,反码,补码
- 计算机的原码, 反码和补码
- 计算机的原码,反码与补码
- 计算机 --- 原码 反码 补码
- 计算机原码、补码、反码
- 计算机原码、反码、补码
- java学习总结(06,05.16)计算机对数据的储存方式以及原码反码补码的概念
- 原码,补码,反码的计算方式
- 负数在计算机中存储方式,原码,补码,反码概念
- 原码反码补码,计算机中的数字表示
- jquery dom 文档对象操作,插入,删除,克隆,替换
- locust python 性能测试,简单好用
- Cordova --- 第三方app实现微信登录功能
- Fragment中监听Back返回键
- 多层嵌套Fragment获取父Activity(Fragment)控件及方法
- 计算机内存对数字的存储方式——原码、反码、补码
- hibernate中如何将图片转化成二进制信息存储
- Qt项目构建路径问题
- CAST AIP 用于AXA安盛集团的成功案例
- cpp模块中如何定义你的对外接口头文件
- AndroidStudio3.0正式版新建项目出现Error:Protocol family unavailable的解决办法
- noteBook3.1-CSS
- Ajax实现跨域的三种方法-java示例
- 堆排序