二进制负数的最高位是1,那如果正数的最高位就是1怎么办
比如一个只有一个八位,0000-0000,那么十进制的255用二进制表示就是1111-1111,可是二进制最高位是1的时候是负数,这个应该怎么理解...
比如一个只有一个八位,0000-0000,那么十进制的255用二进制表示就是1111-1111,可是二进制最高位是1的时候是负数,这个应该怎么理解
展开
展开全部
所以整数就有“有符号整数”和“无符号整数”之分啊,比如你说的8位的整数,如果按无符号整数来用,那么最小值0(二进制0000-0000),最大值是255(1111-1111),总数是256个,而如果作为有符号整数来用,则最小值为-128(二进制1000-0000),最大值为127(0111-1111),总数也还是256个。由于8位整数的容量太小(只有256个),所以在大多数程序设计语言中都把8位整数设为无符号整数(即0到255,通常叫做字节型或Byte型)。
而16位、32位、64位整数则通常都是有符号整数:
16位整数的最小值为 -32768(二进制 1000-0000-0000-0000),最大值为32767(0111-1111-1111-1111),如果超过这个范围(比如32768),那么程序就会报“溢出”的错误,这种情况下就要扩大数的位数才行了。
32位和64位的原理是一样的,这里就不列出来了。
所以你说的如果正数的最高位为1怎么办的问题,回答就是自动变为负数了,或者说如果最高位为1那这个数就不是正数,除非是8位无符号整数(但你也必须知道,无符号整数只有正数和0,没有负数)。
补充说一下:在有符号整数中,最高位称为符号位,就是用它来表示数的正负的,也正因为如此,数值的最大值会减小一半(比如16位整数的65535减少为32767),与此同时,最小值也由0变为负数(-32768),但加起来的总数(65536)是不变的。
而16位、32位、64位整数则通常都是有符号整数:
16位整数的最小值为 -32768(二进制 1000-0000-0000-0000),最大值为32767(0111-1111-1111-1111),如果超过这个范围(比如32768),那么程序就会报“溢出”的错误,这种情况下就要扩大数的位数才行了。
32位和64位的原理是一样的,这里就不列出来了。
所以你说的如果正数的最高位为1怎么办的问题,回答就是自动变为负数了,或者说如果最高位为1那这个数就不是正数,除非是8位无符号整数(但你也必须知道,无符号整数只有正数和0,没有负数)。
补充说一下:在有符号整数中,最高位称为符号位,就是用它来表示数的正负的,也正因为如此,数值的最大值会减小一半(比如16位整数的65535减少为32767),与此同时,最小值也由0变为负数(-32768),但加起来的总数(65536)是不变的。
展开全部
你这两个最高位不是同一概念。
计算机表达数值是一个固定长度的二进制串,一般计算机用的是32位整数或64位整数。
这个固定长度的最高位为符号位,符号位为1表示负数,0代表正数。
拿32位整数来说,十进制的255表示成32个比特是前面24个0加上后面8个1
其最高位也就是符号位还是0,
但要注意32位整数带符号位的只能表达有限范围的整数,为-2^31 到2^31-1
注:负的2的31次方到2的31次方减一
超过2的31次方的正整数,计算机使用32位整数是不能表示的。
计算机表达数值是一个固定长度的二进制串,一般计算机用的是32位整数或64位整数。
这个固定长度的最高位为符号位,符号位为1表示负数,0代表正数。
拿32位整数来说,十进制的255表示成32个比特是前面24个0加上后面8个1
其最高位也就是符号位还是0,
但要注意32位整数带符号位的只能表达有限范围的整数,为-2^31 到2^31-1
注:负的2的31次方到2的31次方减一
超过2的31次方的正整数,计算机使用32位整数是不能表示的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询