1个字节的数据的取值范围为什么是-128到127
数据的取值范围是怎么算的啊?跟计算机如何存数有关系吗,比如说什么形式存储?再弱弱的问一句,怎么给自己满意的答案加分? --------------------编程问答-------------------- 因为有0的存在。-1~-128 总计 128 个数字
1~127 总计 127 个数字
最后加上0
全部 256 个数字
1个字节,也就是8个byte,所能表示的最大信息量就是2^8,恰好也就是256。
关于你的其它问题,建议你baidu下“补码”,就会比较清楚了。 --------------------编程问答-------------------- 就是哦,可以理解,但是怎么算的呢。。。。 --------------------编程问答-------------------- 8位 2的8次方 --------------------编程问答-------------------- 求详细算的过程。。。。 --------------------编程问答--------------------
建议你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个字节,也就是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.反正我是这样理解的。 --------------------编程问答-------------------- 讲的很清楚啊 --------------------编程问答--------------------
这个说的很清楚了!
补充:Java , Eclipse