2019独角兽企业重金招聘Python工程师标准>>>

1 字节 = 8位
int型 2字节 = 16位按VC++和C++的规定,int和long等长,都是32位的。short才是16位的。只有原始的C才定义int和short等长为16位。 这个数据范围指的确实是具体 int的取值范围,但不是你理解的那样。
现在以16位的short为例。
首先必须清楚一个概念,计算机中存放的数据都是以二进制形式存放的。short存放的是整型数据,是用固定位数16个二进制位来表示一个整数,不足16位补0。
比如125的二进制是1111101,那么在内存中存放就是
0000 0000 0111 1101 那么16个二进制位能够表示多少种不同的整数呢?稍微用点数学常识就知道,是2的16次方,也就是65536个不同的整数。所以对于无符号整数,unsigned short的范围就是0~65535。
而为了表示负数,计算机用short的第一位作为符号位来表示正负。注意,计算机中是以补码的形式存放整数的。对于正数,补码是其本身;对于负数,其补码是对其绝对值的按位取反,再加1的结果。
举个简单的例子:
125是0000 0000 0111 1101
-125计算过程:
125是0000 0000 0111 1101
按位取反,1111 1111 1000 0010
再加1,1111 1111 1000 0011
所以-125就是1111 1111 1000 0011。
补码不是三言两语能讲得清楚的,楼主有个概念即可。
我们发现,正数的补码首位都是0,负数的补码首位都是1。
short有符号型的范围是-32768~32767。 那么,如果超出了范围,会发生什么现象呢?
很简单,这称为溢出。
比如short a = 32768
32768是1000 0000 0000 0000。还记得我讲过吗?正数的补码首位都是0,但这里首位为1,这是怎么回事呢?其实因为浪费了1位做符号位,short的有效位数只是15位而已,而2的15次方是32768,因此正数的范围是0~32767,32768超出了范围,计算机怎么处理呢?结果就是把它当作负数,根据补码计算它的原码。反过来即可
1000 0000 0000 0000 减1,
0111 1111 1111 1111 再按位取反,
1000 0000 0000 0000 就是32768
所以1000 0000 0000 0000表示-32768
也就是说short a = 32768;把a输出来得到-32768楼主可以试验一下。 再举一例:
unsigned short a=65536;
65536是1 0000 0000 0000 0000 注意这已经是17位了。计算机会自动截取后面的16位
就是得到0000 0000 0000 0000,也就是0
所以unsigned short a=65536;输出a得到0。
明白了吗?

转载于:https://my.oschina.net/u/2379244/blog/469542

变量定义类型长度的理解相关推荐

  1. python变量定义类型_03_python的数据类型和变量的定义及使用

    1.数据类型按数值非数值分类 (1)python的数据类型可以分为 数字型 和 非数字型. 数字型 整型 (int) 浮点型(float) 布尔型(bool) 复数型 (complex)(主要用于科学 ...

  2. 单片机常用变量定义类型

    常见的变量定义 u8/uint8_t/unsigned char u16/uint16_t/unsigned int u32/uint32_t/unsigned long vu8/volatile u ...

  3. android js变量定义数组长度,js 声明数组和向数组中添加对象变量的简单实例

    数组有四种定义的方式 使用构造函数: var a = new Array(); var b = new Array(10); var c = new Array("first", ...

  4. Scala 变量定义/类型推导/var和val的区别

  5. 对makefile中,变量定义中 通配符的理解

    见如下例子: LIB=*.oall: $(LIB)@echo $^$(LIB):@echo $@ 执行结果: *.o *.o 所以 转载于:https://www.cnblogs.com/gaojia ...

  6. 在python中类型属于对象变量是没有类型的_如何理解python对象有类型,变量无类型...

    在Python中,有这样一句话是非常重要的:对象有类型,变量无类型.怎么理解呢? 首先,5.6都是整数,Python中为它们取了一个名字,叫做"整数"类型的对象(或者数据),也可以 ...

  7. php变量结构体的深入理解,第一节 变量的结构和类型

    前言中提到变量的三个基本特性,其中的有一个特性为变量的类型,变量都有特定的类型,如:字符串.数组.对象等等.编程语言的类型系统可以分为强类型和弱类型两种: 强类型语言是一旦某个变量被申明为某个类型的变 ...

  8. C语言变量的定义包括变量存储类型和变量的什么?

    C语言变量的定义包括变量存储类型和变量的名称.C语言定义变量的格式:"数据类型 变量名;","数据类型"表示想要存储什么类型的数据,"变量名" ...

  9. 前端:JS/17/前篇总结(JS程序的基本语法,变量),数据类型-变量的类型(数值型,字符型,布尔型,未定义型,空型),数据类型转换,typeof()判断数据类型,从字符串提取整数或浮点数的函数

    JS程序的基本语法 1,JS是区分大小写的,如:Name和name是不同的: 2,JS中每一条语句,一般以英文的分号(;)结束,在Java中是严格地一定要加上分号,不然会报错:但在JavaScript ...

最新文章

  1. cocos2dx 2.2.5 hitWidget-onTouchEnded(pTouch, pEvent); 异常
  2. MFC—对话框程序—模式对话框与非模式对话框
  3. Python 列表List - Python零基础入门教程
  4. 四川大学2015年数学分析考研试题
  5. (进阶)LeetCode(9)——回文数(JavaScript)
  6. PHP回顾之多进程编程
  7. 在Mac OS X中配置Apache + PHP + MySQL 很详细
  8. Play framework request code 413
  9. 服务器linux simsun.ttc is not a valid ttf file
  10. 开源有限元程序AsFem
  11. 进政府网站要求IE8浏览器,IE8浏览器进不去,使用IE进政府机构网站提示非法进入提示不能直接使用URL进入网址,windows10安装IE8提示系统不支持【解决办法】
  12. TN3399开发板折腾记录
  13. python_中位数
  14. 重积分定理与计算总结
  15. PostgreSQL multixact日志管理器说明
  16. html嵌入bilibili视频
  17. Java根据奖品权重计算中奖概率实现抽奖(适用于砸金蛋、大转盘等抽奖活动)
  18. Doris同步多库多表
  19. echart绘制直方图+正态分布曲线
  20. 构建高校生态,华为云HCSD校园沙龙走进新疆大学

热门文章

  1. 远程ykvm 插件移值java_远程管理KVM,命令行控制KVM,console连接,透传
  2. 拓展名php,取扩展名_php
  3. verilog的“==”与“===”
  4. ios 平滑移动view_解决页面使用overflow: scroll在iOS上滑动卡顿的问题
  5. pycocotools安装_pycocotools安装问题
  6. 通过channel进行goroutine间的通信
  7. 解封装(九):av_read_frame和av_seek_frame代码示例分析内存占用和清理情况
  8. java 赋值md5_Hook Java API以获得MD5加密前数据
  9. oracle连接eclipse的包,【求助】eclipse导入了Oracle的驱动包连不上Oracle
  10. PannerNode