c语言中,数据类型有short,int,long,char,float,double,然后除了浮点型只有 有符号数(signed)外,其他的数据类型都分为有符号(signed)和无符号(unsigned)。这些数据类型都有一个取值范围,下面我就通过char类型来表达我对数据类型取值范围的计算的理解。

  大家都知道 char 类型是1个字节=8个二进制位,其取值范围是:-2^7~2^7-1;那么这个取值范围是怎么计算得来的呢,首先我们说说,在计算机中,一个变量的最高位表示符号位,规定0代表整数,1代表负数;剩下的其他为的值为这个变量的值。所以,在char类型中,最大的正整数为:0111 1111(2^7-1:可以将0111 1111看成是1000 0000-1所得)。最小的负整数为:1111 1111 (-(2^7-1))。咦!前面不是说最小的是-2^7么?

  当我们以二进制原码表示时:取值范围:1111 1111(-(2^7-1))~1000 0000(-0)和0000 0000(+0)~0111 1111(2^7-1),所以从这里我们可以看出,编码情况要比真实的数值情况多出一种:1000 0000和0000 0000都表示0这个数

  但是在计算机中,存储数据采用的是补码的方式进行存储的,也就是正数的编码不变,即正数范围依旧是0000 0000(+0)~0111 1111(2^7-1),而负数需要符号位不变,其他位取反,取反后再加1,所以我们就直接来看1000 0000(-0),其补码为0000 0000,好了,到了这里,我们可以看出,计算机以补码的方式存储变量时,不管是+0还是-0,其编码都变成了0000 0000,所以 那么就多出来了一个编码1000 0000,,但是因为任何一个原码都不可能在转变成补码时是1000 0000,因此就人为的规定1000 0000 为-2^7。

所以,最后我们得到char的取值范围就是 -2^7~2^7-1;

C语言中数据类型取值范围的计算的理解与总结的更多相关文章

  1. C语言各种数据类型取值范围

    速查表: char -128 ~ +127 1Byte -2^7 ~ 2^7-1 unsigned char 0 ~ 255 1Byte 0 ~ 2^8-1 short -32767 ~ + 3276 ...

  2. C语言中数据类型的取值范围

    C语言中数据类型的取值范围如下:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 ...

  3. C语言数据类型取值范围

    一.获取数据类型在系统中的位数 在不同的系统中,数据类型的字节数(bytes)不同,位数(bits)也有所不同,那么对应的取值范围也就有了很大的不同,那我们怎么知道你当前的系统中C语言的某个数据类型的 ...

  4. 【C语言学习趣事】_33_关于C语言和C++语言中的取余数(求模)的计算_有符号和无符号数的相互转换问题

    最近再次复习C++语言,用的教材是<C++ Primer>这本教材, 看到第二章的时候,里面有个问题困扰了我. 于是想上网查查怎么回事, 结果看了很久都没有得到一个满意的答案. 书上有这么 ...

  5. Loadrunner中参数化取值方式分析

    Loadrunner中参数化取值依赖两个维度: 1.取值顺序分为“顺序”“随机”“唯一”.    select next row:Sequential , Random,unique 2.更新值时分为 ...

  6. R语言中的特殊值 NA NULL NaN Inf

    这几个都是R语言中的特殊值,都是R的保留字, NA:Not available  表示缺失值   用 is.na() 来判断是否为缺失值 NULL:表示空值,即没有内容  用 is.null() 来判 ...

  7. Laravel 中 Session 的使用问题(dd()导致laravel中session取值问题)

    Laravel 中 Session 的使用问题(dd()导致laravel中session取值问题) 一.总结 一句话总结: Laravel 会首先收集需要写入 Session 的所有数据,并在用户的 ...

  8. C语言数据类型取值范围解析

    版权声明:本文为博主原创文章,未经博主允许不得转载.   为什么int类型的取值范围会是-2^31 ~ 2^31-1  ,为什么要减一呢? 计算机里规定,8位二进制为一个字节,拿byte来说,一个BY ...

  9. C语言中数据类型和变量

    C语言中的数据类型 数据类型的本质,固定大小内存块的别名. 数组名代表数组首元素的地址. 数组首元素的地址,&代表整个数组的地址. 数组数据类型,怎么定义数据数组类型,定义数组类型指针,数组类 ...

随机推荐

  1. 关于ecshop的那些故事

    1.php下foreach()错误提示Warning: Invalid argument supplied for foreach() 错误提示:Warning: Invalid argument s ...

  2. EXCEPT差集运算

    EXCEPT差集运算在逻辑上先删除两个输入多集中的重复行,把多集变成集合,然后返回只在第一个集合中出现,在第二个集合中不出现的所有行.可以看下面示意图.

  3. Maven+SSM搭建总结(非教程)

    记录我用Maven搭建Spring+SpringMVC+Mybatis项目的过程. 网上关于这个的详细教程有很多,但是优质而适合自己看的需要自己筛选以下我看过的几篇认为讲的比较详细的资源(照着做吧,做 ...

  4. ASIHTTPRequest下载示例(支持断点续传)

    一.创建网络请求队列 首先,创建网络请求队列,如下: ASINetworkQueue   *que = [[ASINetworkQueue alloc] init]; self.netWorkQueu ...

  5. Python开发入门与实战4-模板页面

    4.Django基于模板页面 在前一章中,HTML是直接被硬编码在 Python views.py代码中,如下: from django.http import HttpResponse import ...

  6. Python的平凡之路(3)

     一.函数基本语法及特性 面向对象:(华山派)—类 —class 面向过程:(少林派)—过程 —df 函数式编程:逍遥派    —函数— df 一般的,在一个变化过程中,如果有两个变量x和y,并且对于 ...

  7. OutputCache 如何使用本地缓存 【转】

    注意!ASP.NET MVC 3 的一个 OutputCache 问题   在用 ASP.NET MVC 3 重写博客园网站首页时,特地留意了一下这个缓存问题,通过这篇博文分享一下. 在 ASP.NE ...

  8. 前后数据交互(ajax) -- 初始化页面表格

    // 初始化员工信息列表 function loadpage ( pageNum ) { var keywords = $("#keywords").val(); $(" ...

  9. 分析器错误 MvcApplication 找不到

    <%@ Application Codebehind="Global.asax.cs" Inherits="test.MvcApplication" La ...

  10. 数据库连接JDBC和数据库连接池C3P0自定义的java封装类

    数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...