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

发布网友 发布时间:2022-04-23 09:37

我来回答

4个回答

热心网友 时间:2023-10-09 17:33

有无符号的整数,在计算机内存中是区别不出有无符号的,而是在程序里有区分。计算机中数据是以补码形式存放的,用二进制表示。比如:默认无符号型,只要在类型符号加unsigned就是无符号型,Int是有符号的。其实说白了就是:定义带符号整数的,则可以存储正负整数,定义无符号整数的,则只可以存储正整数。
拓展资料:
计算机里的数是用二进制表示的,最左边的这一位一般用来表示这个数是正数还是负数,这样的话这个数就是有符号整数。如果最左边这一位不用来表示正负,而是和后面的连在一起表示整数,那么就不能区分这个数是正还是负,就只能是正数,这就是无符号整数。
计算机中的整数分为两类:不带符号位的整数(unsigned
integer,也称为无符号整数),此类整数一定是正整数;带符号位的整数(signed
integer),此类整数可以表示正整数,又可以表示负整数。
无符号整数常用于表示地址、索引等正整数,它们可以是8位、16位、32位、位甚至更多。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。

热心网友 时间:2023-10-09 17:33

11111111
为二进制表示
255,这不用解释什么。
表示负数时,就是用二的补码表示法。
负数的二的补码为“本身的反码加1”,有:
(1)1111111,符号位1表示负数
就要按上面的逆运算进行
除去符号位的七位(1111111),先减1得1111110。
求反码,得0000001,
代入符号,得-1
另外一个例子:
10101010表示多少呢?
同上面步骤
符号位1,负数。
0101010
先减1,得0101001,
求反码,得1010110,(+16+4+2=86)
代入符号,得-86
(我本2楼)
怎么区分,是由最终怎么使用这个数据来决定,如果作为无符号,就是255,如果看成有符号就是-1。由人为的协议规定,在高级语言中由变量的类型来标识出。
如果看成“有符号”整型,标志位是区分的标志。

热心网友 时间:2023-10-09 17:34

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

热心网友 时间:2023-10-09 17:35

一个字节是8位,用8位来表示一个整数,如果是有符号的,第一位用来表示正负,0是正1是负
如果不无符号的,那第一位也可用来表示一个数位,这样可扩大数的表示范围
有无符号,根据软件或硬件有规定的
考试的时候会讲清,或约定的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com