精华内容
下载资源
问答
  • signed char类型取值范围计算
    2021-05-22 04:19:32

    在C语言程序中,给定一个类型,如何计算这个类型变量的取值范围呢?比如有一个字符型变量定义如下:

    signed char c;

    这个字符变量c的取值范围是【-128,127】,是计算出来的呢?

    假设字符型变量占用一个字节,也就是8bit。由于是“signed”,也就是有符号的,也就是可以是正数,也可以是负数,那么8bit中的最高位就是表示符号位。符号位是“1”,就表示是负数,符号位是“0”,就表示是正数。先来看看符号位是“1”的情况。

    符号位是“1”时,能表示的范围是【10000000, 11111111】。二进制的“10000000”表示的负数计算方式是将8bit全部取反,变成“01111111”,再加上“1”变成“10000000”,此时将其按照无符号数来计算,其10进制是128,再加上负号就是-128; “11111111” 表示的负数计算方式是将8bit全部取反,变成“00000000”,再加上“1”变成“00000001”,此时将其按照无符号数来计算,其10进制是1,再加上负号就是-1。因此,符号位是“1”时,其取值范围是【-128, -1】;

    符号位是“0”时,能表示的范围是【00000000, 01111111】。二进制的“00000000”其10进制就是0 ,“01111111”其10进制是“2的6次方 + 2的5次方 + 2的4次方 + 2的3次方 + 2的2次方 + 2的1次方 + 2的0次方 ”= “64 + 32 + 16 + 8 + 4 +2 + 1”= 127。因此,符号位是0时,其取值范围是【0, 127】,结合符号位是1的情况,整个signed char的取值范围就是【-128,127】啦!

    上述就是计算signed char类型的取值范围的方法。如果要计算unsigned char、signed int、unsigned int类型的取值范围呢?方法是一样的,就留给朋友们自己计算啦!

    欢迎关注微信号:C语言编程技术分享

    更多相关内容
  • char类型取值范围分析

    万次阅读 2018-09-13 09:43:12
    众所周知,char类型分为unsigned char(无符号类型)和signed char(有符号类型)。 我先将这些范围用代码打印出来: printf("%d\n",SCHAR_MIN); //signed char最小值 printf("%d\n",SCHAR_...

    众所周知,char类型分为unsigned char(无符号类型)和signed char(有符号类型)。

    我先将这些范围用代码打印出来:

    printf("%d\n",SCHAR_MIN);   //signed char最小值 
    printf("%d\n",SCHAR_MAX);   //signed char最大值 
    printf("%d\n",UCHAR_MAX);   //unsigned char最大值

     

     

    一:先来谈谈unsigned char。
    char类型为一个字节大小,一个字节又分为8位,我们假象char类型占用内存情况如下所示:

            

    因为为无符号类型,所以没有负数,即第一个符号位不存在(即最左边的一位存放的数不代表正负),可用来正常存放源码,所以unsigned char 的最大值为2的8次方减一,即255;当然,最小值为0;
    所以unsigned char 的取值范围为0~255;

    二:signed char
    上面看到,signed char的取值范围为-128~127;
    对于127,大家应该能想到,即最左边的符号为占用一格(符号位为一为负,为0为正),所以出去符号位,还剩7个储存位,所以最大值理所当然为2的7次方减一,即127;   同理可得,负数时只是符号为变为一,负数最小数就应该为-127,但为啥偏偏是-128呢,这里就要用到补码的知识,补码规定: 正数的补码是其本身,负数的补码为其反码加一 ,所以,负数转化为补码需两个步骤, 第一,先转化为反码,第二: 把反码加一。我们计算可得-128的补码为1 1000 0000,恰巧,这是-128的源码,发现和原码一样,所以,-128的原码和-0(1000 000)的原码是不同的,但是在char 型中,是可以用1000 000 表示-128的,关键在于char 是8位,它把-128的最高位符号位1 丢弃了,截断后-128的原码为1000 000 和-0的原码相同,也就是说:

    1000 0000  和-128丢弃最高位后余下的8位相同,所以才可以用-0 表示-128,这样,当初剩余的-0(1000 0000),被拿来表示截断后的-128,因为即使截断后的-128和char 型范围的其他数(-127~127)运算也不会影响结果, 所以才敢这么表示-128。

     

    展开全文
  • 主要介绍了java 数据类型有哪些取值范围多少的相关资料,网上关于java 数据类型的资料有很多,不够全面,这里就整理下,需要的朋友可以参考下
  • char取值范围

    千次阅读 2021-03-06 22:18:53
    展开全部1.char 是一个字节类型。 由8位组成。 char 又分为 signed char (有符号类型) 和 unsigned char (无符号类型)。 通常,我们的理解是62616964757a686964616fe58685e5aeb931333365663537将char 作为 signed ...

    展开全部

    1.char 是一个字节类型。 由8位组成。  char 又分为 signed char (有符号类型) 和 unsigned char (无符号类型)。 通常,我们的理解是62616964757a686964616fe58685e5aeb931333365663537将char 作为 signed char 来处理。

    2.我们先来看 signed char的最大值。  最高位是 符号位, 0 代表正数; 1 代表负数。0 1 1 1  1 1 1 1     这个值等于 2^0 + 2^1 + 2^2  + 2^3  + 2^4  + 2^5  + 2^6  = 127  。 也有一个简便计算方法:2^7 -1 = 128-1 =127   所以,signed char 的最大值是 127 。  这个容易理解。

    3.接下来,看看 singed char 的 最小值 是如何计算的?需要明白一个概念, 在计算机中, 数值是以补码形式存储的。 正数的补码是其本身; 而负数的补码是 取反 (符号位保持不变),再加1。

    4.我们先来看 -1 的存储过程:

    -1:     1 0 0 0  0  0  0  1    ->(取反) 1 1 1 1 1 1 1 0     ->(加1)  1 1 1 1 1 1 1 1

    -2:  1 0 0 0  0  0  1  0    ->(取反) 1 1 1 1 1 1 0 1     ->(加1)  1 1 1 1 1 1 1 0

    -3:  1 0 0 0  0  0  1  1    ->(取反) 1 1 1 1 1 1 0 0     ->(加1)  1 1 1 1 1 1 0 1

    … …

    -127   1 1 1 1  1  1  1  1    ->(取反) 1 0 0 0 0 0 0 0     ->(加1)  1 0 0 0 0 0 0 1

    -128   1 0 0 0  0  0  0  0    ->(取反) 1 1 1 1 1 1 1 1     ->(加1)   1 0 0 0  0  0  0  0

    5.不管是原码还是补码, 总会出现  -0 这个值。 本来 +0 与 -0 是没有区别的。 但对于存储器和编译器来讲,总得充分利用每个字节吧, 更不想出现二义性。 那么,干脆将 -0 表示为 -128 , 这样一来,既增大了signed char 数值的表示范围,又消除了 -0 的二义性,所以signed char的取值范围是 -128~127。

    9b9ea9492170d683fc7e1d2f84eda145.png

    拓展资料

    char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器如pSOS的编译器,还可以通过编译开关来指定它是有符号数还是无符号数。

    char是characteristic的简写,表示一个环或者域的特征,即最小的非负整数n,使ne=0。(e为单位元) 。

    展开全文
  • char类型取值范围

    万次阅读 2017-07-25 22:05:08
    所有的C语言的书籍里都会告诉你signed char取值范围为-128 ~ 127,但是从来没有人告诉你为什么会是这样; 我们先来算算,有符号的char占一个字节,最高位表示正负,其余的七位表示数值,七位二进制可以表示128个...

    所有的C语言的书籍里都会告诉你signed char的取值范围为-128 ~ 127,但是从来没有人告诉你为什么会是这样;

    我们先来算算,有符号的char占一个字节,最高位表示正负,其余的七位表示数值,七位二进制可以表示128个数(2^7 = 128),即0~127;加上符号位后,就变成了-127 ~ -0,0 ~127,这时,就会出现‘-0’这样一朵奇葩;

    我对网上关于-0和-128原码相同的这种说法表示很无语;

    我们知道,计算机是以补码的形式存数据的;

    -0和-128在计算机中是怎样存的?

    所以,-128和-0的原码是不一样的;

    但是,我们的char类型是8位,它把-128最高位符号位截掉了,这样-128的原码就变成了1000 0000;

    被截短的-128的原码才和-0的原码相等;

    既然都说到这里了,终于可以不提‘-0’这个恶心的东西了,今后看到一个有符号的char,它的原码用二进制表示为1000 0000的时候,我们就把它当做-128就可以了(只是看做,-128的原码可不是1000 0000);

    下面,我们来看一下这个程序:

    它会打印127,为什么?

    -129 = -128 -1;因为计算机只会算加法,所以转换成-128 + (-1) 
            -
            -128  原码: 1000 0000
                反码: 0111 1111
                补码: 1000 0000
            -1   原码: 1000 0001
                反码: 1111 1110
                补码: 1111 1111
            -128 + (-1)
                1 0 0 0 0 0 0 0
               + 1 1 1 1 1 1 1 1
                ---------------------------
                1 0 1 1 1 1 1 1 1

    因为a是一个char类型的,所以,会打印127,这只是研究阶段,但请不要这样使用!

    参考自:http://www.embedu.org/Column/Column771.htm

    展开全文
  • char类型数据是计算机编程语言中只可容纳单个字符的一种基本数据类型,取值范围为-128~+127。对于上述概念相信大家都已经很熟悉了,但仍有不少同学对于char类型数据的取值范围抱有疑问,不知道为什么char类型数据的...
  • 相应的 short 作为16位有符号整形,int作为32位有符号整形, long 作为64位有符号整形 都可以如上计算出 取值范围 Short: Unicode Character Representations The char data type (and therefore the value that...
  • Java中数据类型取值范围

    千次阅读 2021-02-12 15:41:41
    整数数据类型取值范围我们都知道计算机的底层是二进制,也知道不同的整数类型存储值的范围不同,可这些数值在计算机底层是怎样存储的呢?数值范围又是怎么计算出来的呢?下面以java来进行举例:byte1个字节 (8bit)...
  • 以前经常看到带符号的char类型取值范围是-128——127,今天突然想为什么不是-127——127,-128是怎么来的?   127好理解,char类型是8位,最高位是符号位,0正1负,所以01111111是127。   但是-128是...
  • 37、(单选题)java中char类型取值范围是() A.0 … 32767 B.0 … 65535 C.–256 … 255 D.–32768 … 32767 【正确答案】B 【答案解析】在java中,char是一个无符号16位类型,取值范围为0到65535。
  • char(int……)类型取值范围

    千次阅读 2020-11-08 17:39:34
    概念悉知:char类型占一个字节,一个字节8个比特位。计算机中储存数字储存的是补码,正数的原返补相同; 1.当char是无符号的时:8个比特位分布为 0000 0000 为最小值1,而当8个比特位分布为 1111 1111 时为最大值即2...
  • Java 基本数据类型取值范围讲解

    千次阅读 2021-02-12 15:41:39
    一、Java的类型词语理解:1) 原始数据类型,简单类型,基本类型都是一个含义;2)复合类型,扩展类型,复杂类型、引用类型都是一个含义;3)浮点类型,实数、实型都是一个含义;4)逻辑型、布尔型都是一个含义;5)本人...
  • C语言-char类型变量范围

    千次阅读 2020-03-20 20:25:19
    char类型变量范围 C语言中字符类型也是属于整型,是否可以用signed和unsigned修饰符??? 若初系统只提供了127个字符,那么就将char类型变量的第一个二进制位设置为0,用后面7位存放0-127,此时,系统提供的char...
  • java char类型的存值范围

    万次阅读 2019-03-08 14:21:02
    Java采用Unicode进行编码,char类型在内存中占2个字节-16位,其值的范围在0-65535之间。20 世纪 80 年代开始启动设计 Unicode 编码时,人们认为两个字节(16 位)的代码宽度足以对世界上各种语言的所有字符进行编码...
  • 对java中char取值范围思考

    万次阅读 多人点赞 2018-07-13 17:15:14
    主要说一下我遇到的一个问题,就是网上关于char字符的取值范围定义,有的说是0-255,有的说是\u0000 - \uffff。 其实,这两种说法都对。 我们都知道,java中给char字符的解释是十六位,双字节,也就是按照补码的...
  • char类型取值范围:-128~127 数字在计算机中以补码形式存储,因为正数的补码就是其本身且正数符号位置0,故最大值为01111111也就是127 而负数的补码是按位取反 (符号位保持不变),再加1。 00000001 //-1 ...
  • 一、在JAVA中一共有八种基本数据类型,...其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~3276
  • Char取值范围为什么是 “-128~127”呢?让我们一起来看看,,,,,,Char 在计算机中占一个字节,八个位。但是在高位代表了符号位其他就是7位,一共可以表示(2^7)127个数字,即0~~127.既然有符号位,就是有正...
  • Java基本数据类型在JAVA中一共有八种基本数据类型,他们分别是byte、short、int、long、float、double、char、boolean取值范围见下图:二. 不同数据类型之间相互赋值范围小的可以赋值给大的, 大的不能直接赋值给小...
  • 4.常用数据类型取值范围 数据类型关键字 字节数 数值范围 char 1 -128到126 unsigned char 1 0到255 short 2 -32,768到32,767 unsigned short 2 0到65,535 long 4 -2,147,483,648到2,147,483,648 unsigned long...
  • java char对应的取值范围

    千次阅读 2018-07-10 11:29:17
    常用范围:大写字母(A-Z):65 (A)~ 90(Z) 小写字母(a-z):97(a) ~ 122(z)字符数字('0' ~ '9'):48('0') ~ 57('9')1,0到9对应的int2,小写字母对应的int3,大写字母对应的int...
  • C语音 unsigned char, int的取值范围

    千次阅读 2019-08-19 16:00:49
    /* exact-width signed integer types */ typedef signed charint8_t; // 范围-128~127 (1 Byte) typedef signed short int int16_t; // 范围 -32768 ~...
  • java short和char取值范围

    千次阅读 2018-05-19 23:19:52
    short类型的取值范围是:-32768---32767 char字符类型的编码值是:0---65535在程序中,short类型可以与char类型相互转换。但一定要注意这两种类型的取值范围,否则可能出错。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,157
精华内容 34,862
关键字:

char类型的取值范围