八位二进制数为什么表示范围(-128~~+127)理解

  • 计算机对带符号数的表示有三种方法:原码、反码和补码    8位原码反码能够表示数的范围是-127~127    8位补码能够表示数的范围是 -128~127    所以既然范围是-128~127,那肯定是用补码表示的。 10000000-11111111表示-128到-1,  00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1。 补码就是二进制表示负数的一种方法
  • 引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个.
  • 注意:-128)没有相对应的原码和反码, (-128) = (10000000)
  • 所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
  • 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
  • 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
时间: 2024-11-08 20:58:33

八位二进制数为什么表示范围(-128~~+127)理解的相关文章

为什么8位二进制数的范围是-128~127

1.计算机对带符号数的表示有三种方法:原码.反码和补码    8位原码和反码能够表示数的范围是-127~127    8位补码能够表示数的范围是 -128~127    所以既然范围是-128~127,那肯定是用补码表示的. 10000000-11111111表示-128到-1,  00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1. 在补码中用(-128)代替了(-0),所以补码的表示范围为: 注意:(-128)没有相对应的原

为何八位有符号整数的范围是-128~127,而不是-127~128

八位的带符号的整数,比如JAVA中的byte,c#中的SByte,为什么值域范围都是-128-127而不是-127~128? 事实上,远古时期有些计算机的设计是采用了反码表示有符号数的,因此8位有符号数的范围是-127~127,它的一个缺点是0是有正负.它用一位表示正负数,然对剩余的位数采用取反. 比如,0111 1111表示127,那-127的则是1000 0000.0000 0000表示正的0,而1111 1111则表示成为负0.因此反码作为有符号的整数并未流行. 现在的计算机中,通常将正数

为什么数值类型byte取值范围是(-128~127)?

在解决这个问题之前,我们先了解几个概念? 一.原码, 反码, 补码的概念 正数的反码和补码都与原码一样: 负数的反码.补码与原码不同,负数的反码:原码中除去符号位,其他的数值位取反,0变1,1变0.负数的补码:其反码+1. 做个小Demo,分别写出7和-7的原码.反码.补码.(其中第一位是符号位,0表示正数,1表示负数) Demo 7 -7 原码 00000111 10000111 反码 00000111 11111000 补码 00000111 11111001 一. 机器数和真值 在学习原码

byte的取值范围为什么是-128~127

直接给总结:计算机规定了0000 0000 代表0,1000 0000代表的-0没有意义,必须找个~127~127之外的数和它对应,「人为规定-0就是-128」,而且这么做完美适合计算机做减法运算. 来我们一步步分析分析: 1.byte占用8位,每位用0或1表示,能够表示256(2^8)个数据. 2.这8位分为符号位(最高位)和数值位(剩余七位),符号位0表示正数,1表示负数. 3.按上一步的理解,容易得到(+127:0111 1111.+1:0000 0001.+0:0000 0000.-0:

[转载]浅析为什么char类型的范围是 —128~+127

http://blog.csdn.net/daiyutage/article/details/8575248 在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用去思考为什么,不是有一个整型范围的公式吗:  -2^(n-1)~2^(n-1)-1   n为整型的内存占用位数,所以int类型32位 那么就是 -(2^31)~2^31 -1 即    -2

浅析为什么 char 类型的范围是 : 128~+127

在 C 语言中, signed char 类型的范围为 -128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是 -128~127,这个问题貌似看起来也很简单容易, 以至于不用去思考为什么,不是有一个整型范围的公式吗:  -2^(n-1)~2^(n-1)-1 (n为整型的内存占用位数),所以 int 类型32位那么就是 -(2^31) ~ 2^31-1 即 -2147483648~2147483647,但是为什么最小负数绝对值总比最大正数多 1 ,这个问题甚至有的

浅析为什么char类型的范围是 —128~+127

在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用去思考为什么,不是有一个整型范围的公式吗:  -2^(n-1)~2^(n-1)-1   n为整型的内存占用位数,所以int类型32位 那么就是 -(2^31)~2^31 -1 即    -2147483648~2147483647,但是为什么最小负数绝对值总比最大正数多1 ,这个问题甚至有的工作几年

8位有符号的取值范围是-128~+127

这是一个困惑了我几年的问题,它让我对现在的教科书和老师极其不满,从我N年前开始摸电脑时,就几乎在每一本C++教科书上都说,8位有符号的取值范围是-128~+127,为什么不是-127~+127呢,后来的java,int的聚值范围,再32位计算,-2^31 ~ +2^31-1,可是,却从来没有任何一本教科书或一个老师比我解释过这个问题 原因没有在工作上或者是什么地方直接遇到它,所以我也一直忽略它,但心里总是有一根刺.直到刚才!!!! 就是刚才,无聊之极,在看汇编的书时,又遇到它了,但一如以往,书上

为什么一个byte的存储范围是-128~127?

为什么一个byte的存储范围是-128~127?文本关键字:byte.字节.二进制位.反码.补码文章目录为什么一个byte的存储范围是-128~127? 一.byte 二.反码与补码 **1. 反码 补码三.byte的数据范围一.byte**在计算机中,一个二进制位是最小的存储单元,由于是二进制,所以能存储的数字只能是0和1.显然,如果我们直接去操作每个二进制位将是很麻烦的过程,所以在编程中我们直接使用的是其他的数据类型,如:byte.int.float.这些数据类型能够使我们的数据存储更加方便