无符号整数和有符号整数怎么区分?

例如:11111111可以看成有符号整数转为十进制结果为-127,也可看成无符号整数转为十进制结果为255,这是咋么回事啊? 谢谢喽······

有无符号的整数,在计算机内存中是区别不出有无符号的,而是在程序里有区分。计算机中数据是以补码形式存放的,用二进制表示。比如:默认无符号型,只要在类型符号加unsigned就是无符号型,Int是有符号的。其实说白了就是:定义带符号整数的,则可以存储正负整数,定义无符号整数的,则只可以存储正整数

拓展资料:

计算机里的数是用二进制表示的,最左边的这一位一般用来表示这个数是正数还是负数,这样的话这个数就是有符号整数。如果最左边这一位不用来表示正负,而是和后面的连在一起表示整数,那么就不能区分这个数是正还是负,就只能是正数,这就是无符号整数。

计算机中的整数分为两类:不带符号位的整数(unsigned integer,也称为无符号整数),此类整数一定是正整数;带符号位的整数(signed integer),此类整数可以表示正整数,又可以表示负整数。

无符号整数常用于表示地址、索引等正整数,它们可以是8位、16位、32位、64位甚至更多。8个二进制表示的正整数其取值范围是0~255(  -1),16位二进制位表示的正整数其取值范围是0~65535(  -1),32位二进制位表示的正整数其取值范围是0~  -1。

有符号和无符号的差别:

int是有符号的,unsigned是无符号的。

它们所占的字节数其实是一样的,但是有符号的需要安排一个位置来表达我这个数值的符号,因此说它能表示的绝对值就要比无符号的少一半。举个例子,我们有一个1个 [1]  字节的整数(虽然这种类型不存在),那么无符号的就是这样:00000000~11111111 这个就是无符号的范围。

一个字节是8位, 有符号的数,因为第一个位要用来表示符号,那么就只剩下7个位置可以用来表示数了0000000~1111111因为有符号,所以还可以表示范围:-1111 111 ~ +1111 111。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-02
  有无符号的整数,在计算机内存中是区别不出有无符号的,而是在程序里有区分。计算机中数据是以补码形式存放的,用二进制表示。比如:默认无符号型,只要在类型符号加

unsigned就是无符号型,Int是有符号的。其实说白了就是:定义带符号整数的,则可以存储正负整数,定义无符号整数的,则只可以存储正整数。
第2个回答  2011-07-20
11111111 为二进制表示 255,这不用解释什么。

表示负数时,就是用二的补码表示法。
负数的二的补码为“本身的反码加1”,有:
(1)1111111,符号位1表示负数
就要按上面的逆运算进行
除去符号位的七位(1111111),先减1得1111110。
求反码,得0000001,
代入符号,得-1

另外一个例子:
10101010表示多少呢?
同上面步骤
符号位1,负数。
0101010 先减1,得0101001,
求反码,得1010110,(64+16+4+2=86)
代入符号,得-86

(我本2楼)

怎么区分,是由最终怎么使用这个数据来决定,如果作为无符号,就是255,如果看成有符号就是-1。由人为的协议规定,在高级语言中由变量的类型来标识出。
如果看成“有符号”整型,标志位是区分的标志。
第3个回答  2011-07-20
有符号整数最高一位是符号位,0表示正,1表示负,所以看成是1111111,转成十进制就是127
无符号整数无符号位,所以是11111111,转成十进制就是255。

我是从“上海全鼎软件学院”毕业的————————追问

恩 谢谢了 这些我都知道,我不知道的是怎么区分一个二进制的数到底是有符号还是无符号的

追答

存储的数字不区分有无符号,关键在于你要怎么去解析使用它。在机器指令中,有针对有符号数及无符号数运算的不同指令。

第4个回答  推荐于2017-09-14
一个字节是8位,用8位来表示一个整数,如果是有符号的,第一位用来表示正负,0是正1是负
如果不无符号的,那第一位也可用来表示一个数位,这样可扩大数的表示范围

有无符号,根据软件或硬件有规定的
考试的时候会讲清,或约定的本回答被提问者采纳
相似回答