为什么c语言中short的表示范围是-32768~32767?(转)

(2012-03-29 17:28:57)

标签:

it

分类:

C语言

这得从二进制的原码说起:

如果以最高位为符号位,二进制原码最大为(0111111111111111)=2的15次方减1=32767,最小为(1111111111111111)=-2的15次方减1=-32767

。此时0有两种表示方法,即正0和负0:(0000000000000000)=(1000000000000000)=0 。

所以,二进制原码表示时,范围是-32767~-0和0~32767,因为有两个零的存在,所以不同的数值个数一共只有2的16次方减1个,比16位二进制能够提供的2的16次方个编码少1个。

但是计算机中采用二进制补码存储数据,即正数编码不变,从(0000000000000000)到(0111111111111111)依旧表示0到32767,而负数需要把除符号位以后的部分取反加1,即-32767的补码为(1000000000000001)。

到此,再来看原码的正0和负0:(0000000000000000)和(1000000000000000),补码表示中,前者的补码还是(0000000000000000),后者经过非符号位取反加1后,同样变成了(0000000000000000),也就是正0和负0在补码系统中的编码是一样的。但是,我们知道,16位二进制数可以表示2的16次方个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,这个编码就是(1000000000000000),因为任何一个原码都不可能在转成补码时变成(1000000000000000)。所以,人为规定

(1000000000000000)这个原码编码为-32768。(看到这里大家就不用再纠结-32768怎么表示了。。。)

所以,补码系统中,范围是-32768~32767。

因此,实际上,二进制的最小数确实是(1111111111111111),只是二进制补码的最小值才是(1000000000000000),而补码的(1111111111111111)是二进制值的-1。

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

c语言为什么要使用short类型,为什么c语言中short的表示范围是-32768~32767?(转)...相关推荐

  1. c语言int2字节负数类型范围,c语言中int范围是多少?

    C语言中int的取值范围是:"-2147483648 ~ 2147483647".int类型在C语言中占4个字节,即32个二进制位:当表示正数时,最高位为符号位(0):当表示负数时 ...

  2. C语言定义变量用什么字母,C语言中变量名有什么要求 C语言中,什么是变量和变量名?它们的区别是什么?...

    导航:网站首页 > C语言中变量名有什么要求 C语言中,什么是变量和变量名?它们的区别是什么? C语言中变量名有什么要求 C语言中,什么是变量和变量名?它们的区别是什么? 相关问题: 匿名网友: ...

  3. c语言中short作用,C语言中short的意思

    short和int等一样,是C或C++的一种内部数据类型.用于表示有符号整数. 不同的是,他们在内存中所占的空间大小不同,short通常为int所占一半,也有一些实现为和int一样,但不会比int大. ...

  4. C语言一定要有函数声明吗,1 什么是C语言的隐式函数声明在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码。下...

    1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码.下面是一个例子: int main(int ...

  5. c语言int的取值范围源程序,C语言中int的取值范围是多少

    C语言中int的取值范围是多少 发布时间:2020-07-03 11:35:02 来源:亿速云 阅读:104 作者:Leah C语言中int的取值范围是多少?针对这个问题,这篇文章详细介绍了相对应的分 ...

  6. 【C语言进阶深度学习记录】九 C语言中const的详细分析

    文章目录 1 const的分析 2 const本质的分析实验 2.1 代码案例分析 3 const修饰函数参数和返回值时的情况 3.1 代码案例分析 4 总结 1 const的分析 不管是C语言还是C ...

  7. c语言中short作用,C语言short

    C语言short教程 C语言short定义详解 语法 short int varname = value; short varname1 = value2; //简写形式 参数 参数 描述 short ...

  8. 【C语言进阶深度学习记录】八 C语言中void的分析

    文章目录 1 void的意义 1.1 不存在void变量 1.2 C标准 1.3 void指针的意义 1.4 通过void* 实现memset函数 2 总结 1 void的意义 void修饰函数的参数 ...

  9. c语言控制字符的作用是什么意思,c语言中char的用法是什么意思

    C语言是计算机软件领域非常经典的编程语言,C语言中char的作用有哪些你了解吗.下面学习啦小编就跟你们详细介绍下c语言中char的用法,希望对你们有用. c语言中char的用法:c语言中char的用法 ...

  10. c语言中不正确的浮点型常量,c语言中float a=1;对吗?,c语言的问题。float a=1,*b=a,*c=...

    导航:网站首页 > c语言中float a=1:对吗?,c语言的问题.float a=1,*b=&a,*c= c语言中float a=1:对吗?-,c语言的问题.float a=1,*b ...

最新文章

  1. 高分辨率下IE浏览器缩放导致出现右侧滚动条问题的解决
  2. hibernate_day03_MySQL数据库-表与表之间的多对多关系-实例
  3. WordPress的option处理 - 底层数据库表的操作
  4. PC寄存器为什么会被设定为线程私有
  5. shell 文件内容替换 sed用法
  6. JS对以对象组成的数组去重
  7. 算法:数组中的逆序对
  8. c 语言转换成java语言,求助大神!!!JAVA转换成C语言
  9. Cesium专栏-裁剪效果(基于3dtiles模型,附源码下载)
  10. 用Lucene[1].net对数据库建立索引及搜索+
  11. 前端第二篇-学成在线首页(作品)
  12. 互联网公司裁员,中年失业找不到工作,大龄程序员的出路在哪里
  13. typescript:类型细化
  14. 计算机应用程序是啥意思,为什么某些Mac应用程序需要“使用辅助功能控制此计算机?...
  15. 推理时 cnn bn 折叠;基于KWS项目
  16. php秒杀负库存问题,店铺商品出现负库存原因分析,负库存商品处理规范
  17. littlevgl之cont 控件(容器控件)
  18. cf103202M. United in Stormwind
  19. java毕业设计——基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现(毕业论文+程序源码)——智能在线考试信息管理系统
  20. 读《了不起的盖兹比》于海生译版 有感

热门文章

  1. 剑网3最新服务器哪个人多,狂欢夜178万剑网3玩家挤爆服务器 新赛季玩家自觉排队做任务...
  2. 【翻译】Javac骇客指南
  3. Pwnable.kr collision [Writeup]
  4. 游戏服务器中的ID生成策略
  5. ARM9开发板实验笔记(1)
  6. 费马,solovay-staassen,米勒拉宾素性检验方法python实现与比较
  7. 第九届蓝桥杯国赛 调手表
  8. 【随机过程】笔记和习题分享 第一章 随机过程基本概念
  9. android获取农历时间,android 日历(带提醒、日程、阴历转换)
  10. 活着的意义--读《此生未完成》有感