1字节的表示范围为-128到127,为什么不是-128到128

作者&投稿:公怡 (若有异议请与网页底部的电邮联系)
用1个字节来表示有符号整数范围,范围为-128到127,为什么?重点说明一下-128是怎么来?~

之前的回答是错的,实在对不住。

-128是个特殊的数,不用考虑符号位!若字长为1byte,因有一位是符号位,所以原码能表示数值的范围为(-127~-0 +0~127)共256个注:-0和+0.(印度人将零作为标记并放入运算之中,对人类文明的贡献极大)在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个.
注:(-128)没有相对应的原码和反码, (-128) = (10000000)希望对你有帮助!

在计算机中一般来说,一个字节8位,即可表示 2^8=256,有符号数那就是-128到128了,但实际表示的范围是-128到127。

在补码中用(-128)代替了(-0),所以补码的表示范围为: (-128~0~127)共256个.

-1-127的结果应该是-128,在用补码运算的结果中, [1000 0000]补 就是-128。但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示。(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的)

使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制,使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]。

扩展资料

原码:

计算十进制的表达式: 1-1=0

1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2

如果用原码表示,让符号位也参与计算, 显然对于减法来说, 结果是不正确的。这也就是为何计算机内部不使用原码表示一个数。

为了解决原码做减法的问题, 出现了反码:

计算十进制的表达式: 1-1=0

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

发现用反码计算减法, 结果的真值部分是正确的。而唯一的问题其实就出现在"0"这个特殊的数值上。虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的。而且会有[0000 0000]原和[1000 0000]原两个编码表示0。

于是补码的出现, 解决了0的符号以及两个编码的问题:

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原

这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了。而且可以用[1000 0000]表示-128:

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补 + [1000 0001]补 = [1000 0000]补

参考资料:百度百科 - 二进制补码



因为中间有“0”。

一个字节8位,即可表示 2^8=256,-128到-1是128,0到127是128,加起来是256。如果是-128到128中间包含“0”,-128到-1是128,0到128是129,那就是257了。

一个字节,如果采用原码表示正整数(含0),可以表达0-255,即 2^8=256,一共256种状态,从全0到全1的各种排列组合。

如果要表示负数,则符号位需要占用一位(最高位,1代表负数,0代表正数),因此其绝对值最大范围为0-127,即2^7=128,一共正负各128种状态,如果不采用特殊处理,这时候0占用2个编码(10000000和00000000),数据表示范围为-127到-0及+0到127,这样总体上一个字节只有255种状态,因为其中0具有正0和负0之分,这不符合数学意义也浪费一个编码。

扩展资料

补码的好处:

首先加入没有补码,+0 在计算机中的表示0 000 0000. -0 在计算机中的表示1 000 0000. 并不一致。

如果采用补码-0 的补码就是 0 000 0000. 两者一致

其次我们知道8位二进制的表示形式总共有0000 0000-1111 1111 那么多,恰好是2^8=256.  也就是说理论上可以表示256个十进制数字。我们前面知道,-0 在计算机中如果再用原码 就是1 000 0000 。如果采用反码就是1 111 1111. 会多占用一个表达。

所以如果采用补码就可以把1 000 0000 这个表达空出来表示一个十进制数字。 很显然用它来表示-128 最为合理。

还可以从另外一个角度来理解: -127 的补码是1000 0001.再减去1 就是1000 0000 。那-127-1=-128.

所以补码的好处就是计算机的表达位数可以充分利用表示跟多的十进制数。



一个字节8位,如果采用原码表示正整数(含0),可以表达0-255,即 2^8=256,一共256种状态,从全0到全1的各种排列组合。如果要表示负数,则符号位需要占用一位(最高位,1代表负数,0代表正数),因此其绝对值最大范围为0-127,即2^7=128,一共正负各128种状态,如果不采用特殊处理,这时候0占用2个编码(10000000和00000000),数据表示范围为-127到-0及+0到127,这样总体上一个字节只有255种状态,因为其中0具有正0和负0之分,这不符合数学意义也浪费一个编码。
除了以上的弊端,还有个原因是,早期硬件很昂贵,一位或者一个编码的浪费都是不可饶恕的,因此人们想到了另一种编码把负0利用起来,即当遇到负数时,采用补码来表示就可以解决这个问题,而遇到正数或0时还是保留原码表示。因此这个负0通过补码算法处理后自然而然地被利用起来,用来表示-128.
补码的算法为:绝对值的原码各位取反后加1.
例1:负1的补码:
绝对值的8位原码为00000001
取反:11111110
加1 :11111111
此时最高位被处理为1,满足高位为1代表负数的定义。
例2:负128的补码:
绝对值的8位原码为10000000
取反:01111111
加1 :10000000
此时同样的最高位被置为1,同样满足高位为1代表负数的定义,同时原先表示负0的编码被利用起来表示-128。
因此一个字节的有符号整数范围为-128到127,至于-1到-128之间的其他负数你可以用这个算法去验算,建议用windows自带的计算器种的程序员模式去学习和理解。

一字节是8Bit,2的8次方,是256个数,-128到127包括0在内就是256个数。


char和byte是一个意思?
byte d3 = 127; \/\/ 如果是byte d3 = 128;会报错 byte d4 = -128; \/\/ 如果是byte d4 = -129;会报错 2、占用空间大小和大小范围不同 byte占1 个字节;大小范围为-128—127 ;char占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一...

两个字节存储范围是什么
两个字节的范围,无符号是0~65536,有符号是-32768~32767

c语言 1个字节 范围为什么是 -128 — 127,-128怎么算的
正数一个字节最大只能是127,128超过了一个字节能表示的最大值,127是01111111,加1, 00000001等于 10000000,最高为是2的7次方等于128,由于一个字节的最大值是127,所以128就只能是-128,但是这里的符号位应该是补全的码,由于只有一个字节看不到 ...

怎么用一个字节以补码的形式把十进制整数表示为二进制?
一个字节(有符号)能容纳的数字范围是-128~127 转换例子1:61 61整除2,将余数写在旁边,用商再整除2,得到的余数写在旁边已经有的数字的左边,用得到的商继续重复上述过程 61\/2=30...1 1 30\/2=15...0 01 15\/2=7...1 101 7\/2=3...1 1101 3\/2=1...1 11101 1...

字节的单位是什么?
B。字节(Byte,简称B)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。一个字节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存。电脑的各种存储器的最小的存储单位是比特,也就...

一个字节表示的最大无符号整数是
一个字节表示的最大无符号整数是255。拓展知识:一、简介 字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。一个字节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存。二...

一个字节补码所能表达的数值范围是多少
一个字节,即字长8位,8位补码表示的有符号整数范围: -128d ~+127d 8位补码表示的有符号小数范围: -1.0000000b ~ 0.1111111b , 即 -1d ~+(127\/128)d

请问1个字节能表示的整数范围是多少,写下过程,谢谢!
从-128到127,共512个数。若无符号,则是0到511 带符号数过程: 1字节8个位,16进制为0x00到0xFF(0x表示16进制),最高位为符号位,0是正数,1是负数。 因此,0x0就是0,0x1到0x7f为正数1到127,而0x80到0xff为负数-128到-1 特别注意0x80=-128,0xff=-1,换算方法是按位取反加一,...

一个数字占多少字节?
一个数字是一个字节。字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符,一个字节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存。字符字节:字节ASCII码:一个英文字母(...

Byte和bits区别?
bit 表示位。二进制数系统中,每个 0 或 1 就是一个位(bit),是存储信息的最小单位。Byte 表示字节。字节是由 8 个位所组成,一个字节存储 8 位无符号数,储存的数值范围为 0-255。2、二者的大小不同:1 Byte =8 bit。一般情况下,用大写 B 对应 Byte,即字节;用小写 b 表示 bit,...

历下区18450095314: 请问1个字节能表示的整数范围是多少,写下过程,谢谢! -
水艳得力: 从-128到127,共512个数.若无符号,则是0到511 带符号数过程: 1字节8个位,16进制为0x00到0xFF(0x表示16进制),最高位为符号位,0是正数,1是负数. 因此,0x0就是0,0x1到0x7f为正数1到127,而0x80到0xff为负数-128到-1 特别注意0x80=-128,0xff=-1,换算方法是按位取反加一,详见 http://baike.baidu.com/view/377340.htm

历下区18450095314: 用1个字节来表示有符号整数范围,范围为 - 128到127,为什么?重点说明一下 - 128是怎么来? -
水艳得力:[答案] 之前的回答是错的,实在对不住.

历下区18450095314: 分别写出有符号和无符号1字节,2字节,4字节所能表示的整数范围 -
水艳得力:[答案] 无符号(1字节) 0到255 有符号(1字节)-128到127 无符号(2字节) 0到65535 有符号(2字节) -32768到32765 无符号(4字节) 0到4294967295 有符号(4字节)-2147483648到2147483647

历下区18450095314: 一字节带符号负数的补码表示范围? -
水艳得力:[答案] 你这种情况比较复杂!不带符号的一个字节最大表示数字为0-255一共256个数字.带符号的数字的话,首先非正非负有一个:0然后128首位为1为负数,所以正数为1~127共127个.那么,负数有128个.它的补码为1~128.

历下区18450095314: 一个字节表示补码的范围? -
水艳得力: 一个字节,即字长8位, 8位补码表示的有符号整数范围: -128d ~+127d 8位补码表示的有符号小数范围: -1.0000000b ~ 0.1111111b , 即 -1d ~+(127/128)d

历下区18450095314: 8位二进制表示带符号的整数范围 -
水艳得力: 是-128~+127 ,这是补码表示, 而原码,反码表示的是-127~+127. 原因是原码,反码的0都有两种表示,而补码不同,补码的0只有一种表示.所以补码表示的范围比原码,反码表示的范围大1个. 补码表示的 +127 =01111111,0=00000000,-127=10000001, 在-127的基础上减1,就会得到-128.-128的补码-128=10000000

历下区18450095314: 一字节补码所能表示的整数范围是() - 上学吧
水艳得力:[选项] A. -127≤ A ≤127 B. -128≤ A ≤128 C. -128≤ A <128 D. -128< A ≤128

历下区18450095314: 汇编语言如何将一个字节与 - 128~127相对应一个字节所能表示的有符号数的范围为 - 128~127,那么这个字节是不是以00H~7FH表示 - 128~ - 1,80H~FFH表示0~... -
水艳得力:[答案] 计算机里面,使用补码来代表有符号数. 即: 00H~7FH表示0~127,这就是“正数不变”; 80H~FFH表示-128~-1,这就是“负数求反加一”. 上述引号中的文字,就是求补码的方法.

历下区18450095314: 在计算机中一个字节可表示 -
水艳得力: 表示三种含义,具体含义看情况而定. 1、ASCII码 参见: http://baike.baidu.com/view/812.htm ; 2、有符号数 能表示:-128~127 3、无符号数 能表示:0~255

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网