有符号类型和无符号类型

负数在计算机中如何表示呢?

1、是否需要有正负。

如果这个量不会有负值,那么我们可以使用无正负的类型。

分正负的类型,称为有符号类型;无正负的类型(只有正值),称为无符号类型。

2、使用二制数中的最高位表示正负。

(第一位为最高位)

单字节数: 1111 1111

双字节数: 1111 1111 1111 1111

四字节数: 1111 1111 1111 1111 1111 1111 1111 1111

当一个数是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。

当一个数是无符号类型时,最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值。

3、无符号类型和有符号类型的范围区别。

无符号类型中,所有的位都用于直接表示该值的大小。我们举一个字节的数值对比:

无符号类型: 1111 1111 值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

有符号类型: 0111 1111 值:127 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

同样是一个字节,无符号类型的最大值是255,而有符号类型的最大值是127。原因是有符号类型中的最高位被挪去表示符号了。

有符号类型的长处是它可以表示负数。虽然它的在最大值缩水了,却在负值的方向出现了伸展。我们仍用一个字节的数值对比:

无符号类型: 0 —————————–255

有符号类型: -128 ——— 0 ———- 127

二者能表达的数值的个数都是256个。无符号类型表达的是 0~255 这256个数,有符号类型表达的是 -128 ~ 127这256个数。

有符号类型的负数使用补码表示。

4. 原码、反码、补码

有 int 类型的数,值为5,那么,我们知道它在计算机中表示为:

00000000 00000000 00000000 00000101

如果是 -5,在计算机中如何表示? 负数以补码表达。

(1)原码:一个整数,按照绝对值转换成的二进制数,称为原码。

比如 00000000 00000000 00000000 00000101 是5和-5 的原码。

(2)反码:原码按位取反,就是反码。

取反操作指:1变0; 0变1

00000101每一位取反,得11111010。

(3)补码:补码=反码+1。

00000101 的反码是:11111010。

补码 = 11111010 + 1 = 11111011

-5在计算机中表达为:11111011。转换为十六进制:0xFB。

我们来看int型整数-1在计算机中如何表示:

1、先得原码: 00000001

2、得反码: 11111110

3、得补码: 11111111

-1在计算机里用二进制表达就是全1。16进制为:0xFF。

6、java中只有有符号的数据类型
那对于java的数据类型,我们就只有有符号的数据类型了,如short 的表示范围 -128到+127,这就是代表有符号的数据类型了。

java没有无符号类型,都是有符号类型的数据类型。但是其它语言,如c的unsigned short 无符号数,它值的范围就是要从0开始,并且比java的short类型保存的数据范围更大。

在实际开发中,可能要与c写的硬件接口,网络接口相互直接数据交互,此时由于java没有无符号的数据类型,导致java与c看似相同的数据类型,其实存储空间确是不同的,这个问题解决方法是java用更高的存储数据类型,如果c用int,你的java就要考虑用Long或者BigInteger了。还有一种方法就是用java的guava框架来实现你的目标了。你自个其实也可以写,但是容易出问题哦。


参考文章https://blog.youkuaiyun.com/android_bar/article/details/76571925
参考文章https://www.cnblogs.com/huzi007/p/6566567.html

### 回答1: 最常见的符号类型有 char、int、float double,其中 char 的最小值为 -128,最大值为 127;int 的最小值为 -2147483648,最大值为 2147483647;float 的最小值为 1.17549e-38,最大值为 3.40282e+38;double 的最小值为 2.22507e-308,最大值为 1.79769e+308。无符号类型有 unsigned char、unsigned int、unsigned long unsigned long long,其中 unsigned char 的最小值为 0,最大值为 255;unsigned int 的最小值为 0,最大值为 4294967295;unsigned long 的最小值为 0,最大值为 18446744073709551615;unsigned long long 的最小值为 0,最大值为 18446744073709551615。 ### 回答2: 数据类型分为有符号类型无符号类型有符号类型是指可以表示正数、负数零的数据类型,它的范围是从最小值到最大值。常见的有符号类型包括: 1. char类型:表示字符的数据类型,范围为-128到127。 2. short类型:表示短整的数据类型,范围为-32768到32767。 3. int类型:表示整的数据类型,范围为-2147483648到2147483647。 4. long类型:表示长整的数据类型,范围为-9223372036854775808到9223372036854775807。 5. float类型:表示单精度浮点的数据类型,范围为-3.4E38到3.4E38。 6. double类型:表示双精度浮点的数据类型,范围为-1.7E308到1.7E308。 无符号类型是指只可以表示正数零的数据类型,它的范围是从0到最大值。常见的无符号类型包括: 1. unsigned char类型:表示无符号字符的数据类型,范围为0到255。 2. unsigned short类型:表示无符号短整的数据类型,范围为0到65535。 3. unsigned int类型:表示无符号的数据类型,范围为0到4294967295。 4. unsigned long类型:表示无符号长整的数据类型,范围为0到18446744073709551615。 需要注意的是,不同的编程语言操作系统可能对数据类型的表示范围有所不同,在使用时应根据具体情况进行判断选择。 ### 回答3: 数据类型是计算机中用于表示数据的一种方法。在计算机中,数据类型可分为有符号类型无符号类型有符号类型是指可以表示正数、负数零的数据类型。它的范围从最小负数到最大正数。以下是常见有符号类型及其最小最大范围的示例: 1. char类型是用于表示字符的有符号整数类型,占用1个字节。它的范围从-128到127。 2. short类型是用于表示较小整数的有符号整数类型,占用2个字节。它的范围从-32768到32767。 3. int类型是用于表示整数的有符号整数类型,占用4个字节。它的范围从-2147483648到2147483647。 4. long类型是用于表示大整数的有符号整数类型,占用8个字节。它的范围从-9223372036854775808到9223372036854775807。 无符号类型是指只能表示正数零的数据类型。它的范围从零到最大正数。以下是常见无符号类型及其最小最大范围的示例: 1. unsigned char类型是用于表示无符号字符的类型,占用1个字节。它的范围从0到255。 2. unsigned short类型是用于表示较小无符号整数的类型,占用2个字节。它的范围从0到65535。 3. unsigned int类型是用于表示无符号整数的类型,占用4个字节。它的范围从0到4294967295。 4. unsigned long类型是用于表示大无符号整数的类型,占用8个字节。它的范围从0到18446744073709551615。 需要注意的是,不同的计算机系统编程语言可能会有不同的实现范围。因此,上述范围仅为常见情况,并不适用于所有情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值