在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语言编程技术分享

c 语言char取值范围,signed char类型取值范围计算相关推荐

  1. 类型的取值范围_Java基础类型取值范围,从基础的理解加深记忆

    Java有8种基础类型,但是你可能常常会忘记他们的取值范围.而这主要是由于你再依靠默记这些类型的取值范围,而不是从根本上理解. 举例 byte占1个字节,8给比特位,它的取值范围是:-128 ~ 12 ...

  2. 对于c语言int类型和float,以及double类型表示范围的计算

    首先说一下我原来错误的认识 int是32个bit, 如果我们把第一位理解为符号位,那么很显然int的范围是-(2^31-1)~2^31-1 但是实际上我们都知道int的最小值是-2^31次.. 为什么 ...

  3. C语言高级编程:char、signed char 和 unsigned char的使用区别

    1. 区别与联系: 1)在定义字符类型时一般使用char来定义 2)char被当成有符号或是无符号视不同编译器决定,由于ASCII码范围从0-0x7F(127),所以char无论被当成有符号还是无符号 ...

  4. oracle signed类型,char、signed char 和 unsigned char 的区别

    ANSI C 提供了3种字符类型,分别是char.signed char.unsigned char char相当于signed char或者unsigned char,但是这取决于编译器! 这三种字 ...

  5. c# char unsigned_C 中 char、signed char 和 unsigned char 的区别

    C 中 char.signed char 和 unsigned char 的区别 来源:http://bbs.chinaunix.net/thread-889260-1-1.html 参考:https ...

  6. C语言中 unsigned char 与 signed char 不同输出格式一些认识

    首先考虑下面代码输出什么? #include <stdio.h>int main(void){signed char a = -1;unsigned char b = -1;printf( ...

  7. 计算 signed short 的取值范围

    #include <stdio.h> #define BYTEDIGITS 8 //内存中每个字节占8位 void main() { //计算 signed short 类型取值范围 in ...

  8. JAVA语言规范 JAVA SE 8 - 类型、值和变量

    JAVA语言规范 JAVA SE 8 - 类型.值和变量 类型和值的种类 简单类型和值 整数类型和值 整数操作 浮点数类型.格式和值 浮点数操作 boolean类型和布尔值 引用类型和值 对象 Obj ...

  9. 不能将brassplus类型的值分配到brass类的实体_GO的类型系统和类型的方法

    GO的类型系统和类型的方法 [TOC] 1. 类型及其作用 2. 用户自定类型(两种实现) 3. 类型的方法 4. 类型的本质 5. 嵌入类型 0 前言 如果说goroutine和channel是撑起 ...

最新文章

  1. visual code 在标签页打开_VSCode 不在新标签页打开文件如何解决?
  2. APScheduler 浅析
  3. 工程制图 (零件图)
  4. 仿拉钩app(一)---爬虫数据准备
  5. python xpath提取td标签_Python Xpath 提取html整个元素(标签与内容)
  6. Android RecyclerView批量更新notifyItemRangeChanged
  7. 文件服务器 ftp服务器的优缺点,FTP服务器优缺点分析.doc
  8. java qq空间权限控制_QQ空间访问权限设置方法
  9. 经验:OrCAD Capture卡顿问题的解决方法
  10. 从数学上证明墨菲定律
  11. 手工焊的优缺点有哪些?
  12. Python 文件操作
  13. windows nginx出现 was not signaled for 5s的看过来
  14. Python学习出来好找工作吗?好找工作的关键是什么?
  15. 计算机附件计算器的用法,计算机附件中计算器使用方法.doc
  16. 关于Ubuntu18.04双系统安装后无法连接WiFi问题解决方法
  17. 在金融公司做 IT 是什么感觉?
  18. 开源OA协同办公平台使用教程:O2OA如何集成金格office控件
  19. Java 机内码 String 转化
  20. 常见排序算法的时间复杂度、空间复杂度、稳定性比较

热门文章

  1. 利用do……while语句,计算1!+2!+3!+……+100!
  2. aal java_在阳光下关闭自动调节功能后,背光很亮,打开自动调节亮度,背光很暗[FAQ12718][AAL] 打开MTK_AAL_SUPPORT 后,自动亮度调节速度变慢...
  3. nm: xxx: no symbols
  4. 在全文索引中同义词的使用
  5. 夺魁NeurIPS 2020电网调度大赛,百度PARL实现NeurIPS强化学习竞赛三连冠
  6. PHPMailer 腾讯企业邮箱
  7. 游戏配音为游戏增色,这些技巧少不了
  8. onclick ondblclick事件共存的方法
  9. SpringSecurity-笔记
  10. 为blog挑选logo