当前位置:编程学习 > JAVA >>

1个字节的数据的取值范围为什么是-128到127

数据的取值范围是怎么算的啊?跟计算机如何存数有关系吗,比如说什么形式存储?再弱弱的问一句,怎么给自己满意的答案加分? --------------------编程问答-------------------- 因为有0的存在。

-1~-128 总计 128 个数字
1~127 总计 127 个数字
最后加上0
全部 256 个数字

1个字节,也就是8个byte,所能表示的最大信息量就是2^8,恰好也就是256。


关于你的其它问题,建议你baidu下“补码”,就会比较清楚了。 --------------------编程问答-------------------- 就是哦,可以理解,但是怎么算的呢。。。。 --------------------编程问答-------------------- 8位 2的8次方 --------------------编程问答-------------------- 求详细算的过程。。。。 --------------------编程问答--------------------
引用 2 楼 sunshine8225 的回复:
就是哦,可以理解,但是怎么算的呢。。。。


建议你baidu下“补码”,就会比较清楚了,第一位是符号位。
00000000 => 0
11111111 => -1
10000000 => -128
01111111 => 127


◎ 负数的补码
  负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
  同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。
  【例2】求-7的补码。
  因为给定数是负数,则符号位为“1”。
  后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001)
  所以-7的补码是11111001。
  已知一个数的补码,求原码的操作分两种情况:
  (1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
  (2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
  再举一个例子:求-64的补码
  +64:01000000
  11000000
  【例3】已知一个补码为11111001,则原码是10000111(-7)。
  因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
  其余七位1111001取反后为0000110;
  再加1,所以是10000111。
--------------------编程问答--------------------
引用 1 楼 ldh911 的回复:
因为有0的存在。

-1~-128 总计 128 个数字
1~127 总计 127 个数字
最后加上0
全部 256 个数字

1个字节,也就是8个byte,所能表示的最大信息量就是2^8,恰好也就是256。


关于你的其它问题,建议你baidu下“补码”,就会比较清楚了。



貌似应该是:“1个字节,也就是8个bit”,哈哈~~~~ --------------------编程问答-------------------- 怎么给自己满意的答案加分?

----------

在回复的帖子的下面,有“结贴”的按钮,点击一下,会跳转到“结贴”页面,每个帖子旁边都有一个输入分数的小文本框,在你认为是满意答复的帖子对应的小文本框中输入你要给的分数,点击“结贴”就行了。还有不明白的查找一下CSDN帮助。 --------------------编程问答-------------------- 长见识了~~~~~~~~~~~

-128 原码: 1 1000 0000 (最前面的1代表负,这里符号位不再是最高位)
对原码按位取反,符号位不变: 1 0111 1111
再加1: 1 1000 0000 => 我们可以认为 1000 0000 就是 -128

--------------------编程问答-------------------- 本来是-0到-127,+0到+127.因为0出现了两次,+0当然就是0了,而-0,我们就用他的补码值来替代了。-0的补码就是-128.反正我是这样理解的。 --------------------编程问答-------------------- 讲的很清楚啊 --------------------编程问答--------------------
引用 5 楼 ldh911 的回复:
引用 2 楼 sunshine8225 的回复:就是哦,可以理解,但是怎么算的呢。。。。

建议你baidu下“补码”,就会比较清楚了,第一位是符号位。
00000000 => 0
11111111 => -1
10000000 => -128
01111111 => 127


◎ 负数的补码
负数的补码是对其原码逐位取反,但符号位除外;然后整个数加……

这个说的很清楚了!
补充:Java ,  Eclipse
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,