快速简单地求负数的补码和求补码代表的负数
特点是:快速简单实用,不用教科书的取反加一之类的麻烦方法。
//1 这是我认为必要的基本知识
补码,是整数数字数据在计算机内部的存储格式。
整数分为正数,0,和负数。
1位二进制数字可以表示2个不同的状态,
2位二进制数字可以表示4个不同的状态,
3位二进制数字可以表示8个不同的状态,
(此处省略4行字,自己想吧。)
8位二进制数字可以表示256个不同的状态。
8位二进制数字也叫一个字节。
一个字节表示的整数范围是:
-128 -127 -126 .... -1 // 共128个负数,
// 0不分正负,只有一个
和 1 2 3 ...到 127 // 共 127个正数。
也就是总共256个数字。
// 2 以上是基本知识,下面才是重点。
1111 1111
这显然是负数的补码,因为最高位是1。最高位也叫做符号位。
为什么最高位是1就是负数的补码呢?这个大有学问。此处省略一万字。
是不是最高位是0就是正数呢?这个不一定。骑白马的不一定都是王子,唐僧有时候也骑白马。唯一的例外就是: 数字0 的最高位也是0.
这个补码代表的负数是多少呢? // 这个才是重点。。
只要两步,就可以解决这个问题。
第一步:把这个补码当作无符号数来读取。得到结果是255
第二步:把第一步的结果减去256,得到的差就是所求的负数。 255-256= -1
所以这个补码是-1的补码。
再给一个例子:1000 0000 // 任意一个负数的补码都适用的。
第一步:128
第二步:128-256= -128
原来这就是 -128 的补码啊!
这里是1个字节,减去的应该是2的8次方,
如果是2个字节,减去的应该是2的16次方,
如果是4个字节,减去的应该是2的32次方。
那么 反过来怎么办呢?如求 -128 的补码。
只要把我说的那两步反过来就好了。
第一步:负数加上 256 -128+256=128
第二步:把上面的结果用二进制表示 1000 0000 这就是负数的补码
Java编程中对负数的表示存储的
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
下一篇:sudoers目录
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java Integer 声明负数 java中怎么表示负数
下面这行代码的输出是什么? public <span></span> static void main(String[] args) { System.out.println( 0xffffffff );
java Integer 声明负数 java 负数 类型转换 Java 类型转换 补码