admin 管理员组文章数量: 887031
关于计算机的原码,反码,补码
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、pandas是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
前言
作为初学者,关于计算机的原码,反码,补码理解起来稍有困难,这里笔者给出自己的理解供大家参考.
提示:以下是本篇文章正文内容,下面案例可供参考
一、原码,反码,补码是什么?
计算机中,数据分正数 负数 0 。
正数:
原码,反码,补码相同.
负数:
符号位 + "真码",
正数的符号位为0, 负数的符号位为1
"真码":数据的二进制的真实表示形式。
10010001 ---》145
例如:一个字节: 8位 2个字节 16
+0:0000 0000
-0: 1000 0000
补码:
反码+1,
前提: 正数的补码与原码相同.
只有负数的补码: 反码+1
反码: 除符号位之外,其余按位取反。
前提: 正数的反码与原码相同,只有负数的反码,是除符号 位以外,按位取反。
二、如何理解
1.例子
13:-------》
计算机中存储二进制的形式 0000 1101
-13:--------》
原码: 1000 1101
反码:符号位不变,按位取反: 1111 0010
补码: 1111 0011
2.如何算出某个值在计算机中储存的二进制真码
例如:
int n = -127 ;System.out.println(Integer.toBinaryString(n));
结果为
计算过程: -127代表的值是1000 0000 0000 0000 0000 0000 0111 1111.但这里因为是负数,所以计算机实际计算的时候需要进行负数的原码,反码,补码的转换,也就是在1000 0000 0000 0000 0000 0000 0111 1111取反码为1111 1111 1111 1111 1111 1111 1000 0000,然后在补码加1,结果为1111 1111 1111 1111 1111 1111 1000 0001.正解.
3.扩展
当涉及到数据类型转换时,如图案例.
int a = 130 ;
byte b = (byte)a ;
System.out.println(b);
这时计算机输出结果为-126,为什么?
解答:
130的二进制为1000 0010,这个是计算机经过计算得到,前面还有24个0.当把它变为byte类型时,因为范围只有一个字符,所以前面24个0都被砍掉了.所以变成了1000 0010.那么这时候在计算机里变成了负数,那么从负数的补码变为原码,答案为1111 1110.前面的1是符号不输出,结果就是111 1110.换算为十进制,结果为-126.
总结
以上就是今天要讲的内容,本文仅仅简单介绍了计算机中的原码,反码,补码,希望对大家有所帮助.
版权声明:本文标题:关于计算机的原码,反码,补码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1698543973h307737.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论