美文网首页
signed char类型取值范围计算

signed char类型取值范围计算

作者: 胖一一 | 来源:发表于2019-02-26 21:41 被阅读0次

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

    signed char c;

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

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

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

    2. 符号位是“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语言编程技术分享

    相关文章

      网友评论

          本文标题:signed char类型取值范围计算

          本文链接:https://www.haomeiwen.com/subject/mlttuqtx.html