恭喜你找到了宝藏,本篇内容非常清晰明了

1.基础了解

先看图,short 和unsigned short的字节数是2,也就是说有2Byte,也就是说 16bit ,
即二进制 0000 0000 0000 0000

2.取值问题

short是带正负号的, 所以取值范围不同,但是最大值和最小值差是一样的

short 32767-(-32768)= 65535
unsigned short 65535-0 = 65535 ,表示为二进制就是 1111 1111 1111 1111
为什么是这个取值呢?因为
2的15次方:32768
2的16次方:65536

3.补码问题

正常人类理解,short取值为十进制的-1时,应表示为 1000 0000 0000 0001
而计算机不会进行“减”运算,都是进行“加”运算,所以1-1,会被计算机解释为 1+(-1)
short s1 = 1; 二进制 0000 0000 0000 0001
short s2 = -1;二进制 1000 0000 0000 0001
short s3 = s1+s2= 0 ;二进制0000 0000 0000 0001+1000 0000 0000 0001=1000 0000 0000 0010

上面s3的二进制

1000 0000 0000 0010

转化为十进制s3-2 而不是0,这是什么情况????

就是为了解决这一问题,才在计算机中引入了补码。

补码是正数不变,
负数是符号位不变,后面诸位取反,末位加一,-1由原来的
1000 0000 0000 0001,变成了 1111 1111 1111 1111
我们再重新计算一下

short s1 = 1; 二进制 0000 0000 0000 0001
short s2 = -1;二进制 1111 1111 1111 1111
short s3 = s1+s2= 0 ;
二进制0000 0000 0000 0001+ 1111 1111 1111 1111=(溢出一位1)0000 0000 0000 0000
还是用程序看起来更为直观:

运行结果下图所示(图中的0x意思就是16进制表示)
C语言程序默认将1前面的0都被省略了,并且默认%d输出出来是2字节,所以s2是八个f …非常尴尬

输出结果修正:

s1 = 1;十六进制 0001 ;二进制 0000 0000 0000 0001
s2 = -1;十六进制 f f f f ; 二进制 1111 1111 1111 1111
s3 = 0;十六进制 0000 ; 二进制 0000 0000 0000 0000

再看一个例子(二进制中,两个正数s1、s2前面的0再一次被省略,这个符号位0表示是正数)

C语言中short和unsigned short的取值问题和计算机组成原理相关推荐

  1. 在C语言中,int型数据的取值范围?

    在C语言中,int型数据所占的字节和具体的编译器有关,32位编译器int占4个字节(VC,C-free),16位编译器int占2个字节(详见"int型数据所占字节和什么有关"). ...

  2. 请编写一个c程序确定signed,unsigned的char,short,int和long变量取值范围

    way1: 通过打印标准的头文件中的相应的值来完成 符号常量 表示 CHAR_BIT char 的位数 CHAR_MAX char 的最大值 CHAR_MIN char 的最小值 SCHAR_MAX ...

  3. 基本功short与Unsigned short以及Java基本类型

    C和C++中: short两个字节长度,其中符号位占了一位.所以实际数值位数是15位.取值范围为:-32768~+32768. unsigned short没有符号位,所以实质数值位数是16位.取值范 ...

  4. short与Unsigned short以及Java基本类型

    C和C++中:  short两个字节长度,其中符号位占了一位.所以实际数值位数是15位.取值范围为:-32768~+32768.  unsigned short没有符号位,所以实质数值位数是16位.取 ...

  5. 计算char,short,int,long类型变量的取值范围

    源自<The C Programming Language>P28 pr2-1: 编写一个程序以确定分别由signed及unsigned限定的char,short,int,long类型变量 ...

  6. python求图形面积_如何使用python语言中的if语句实现求取图形面积

    在python设计语言中,逻辑运算符和判断语句结合起来使用,可以实现不同的功能.一般情况下,如果知道三角形的三边,可以利用三边计算出它的面积:规范的四边形知道对角的两边,就可以计算出对应的面积.下面利 ...

  7. 怎么计算byte,short,int等数据类型的取值范围

    一个byte由八个位组成,符号位 + 数值位,如x0000000,其中第1位是符号位,后面的7位表示数值,第1位是符号位(0为正,1为负).这样+1就是00000001,-1就是10000001.最大 ...

  8. c语言中code table,unsigned char code table[]中的code的作用

    unsigned char code table[]中的code的作用是告诉单片机,我定义的无符号的字符串组放在ROM(程序存储区)里面,因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器), ...

  9. 51c语言int可以不加signed,c语言中signed 和unsigned是什么意思

    1.signed是默认的,表示这个变量是有符号的,可以存储整数和负数. 2.unsigned则需要显示给出表示这个变量,没有符号值能存储数的大小,而且不能表示正负. 3.signed存储符号是有代价的 ...

  10. C语言中signed和unsigned理解

    一直在学java,今天开始研究ACM的算法题,需要用到C语言,发现好多知识点都不清楚了,看来以后要多多总结~ signed意思为有符号的,也就是第一个位代表正负,剩余的代表大小,例如:signed i ...

最新文章

  1. JPA持久化异常:PersistenceException: org.hibernate.PersistentObjectException
  2. Tomcat应用部署:打war包、在Tomcat中注册用户角色、创建虚拟目录和域名
  3. AdapterView及其子类之一:基本原理(ListView、ListActivity类型)
  4. 《花落红尘》:对两性社会非爱即恨的文学消解
  5. 目标检测之YOLO V2 V3
  6. php腾讯云+视频上传失败,腾讯云视频上传和播放尝试总结
  7. 2015计算机类专业课类试卷,2015计算机专业知识试题.doc
  8. Python os模块 -Python系统编程中的操作模块
  9. 「讨论」测试工程师能否作为一份终生职业?30岁+怎么办?
  10. 关于USB-Audio(USB麦克风)设备的录音验证
  11. wiringPi (C语言) 控制树莓派引脚
  12. 杨凌职业技术学院计算机专业宿舍,杨凌职业技术学院宿舍条件怎么样,有独立卫生间和空调吗...
  13. 基于蒙特卡洛的大规模电动汽车充电行为分析(Matlab代码实现)
  14. 牛客网 多校3 I三角形(皮克定理)
  15. 使用C2Prog烧写程序
  16. Unsupported class file major version 55
  17. 成立不到半年,正面 PK 星巴克,luckin coffee是什么来路?
  18. javascript,H5,jQuery,css“实现音乐歌词解析,歌词同步滚动,进度条拖拽、进度条同步,音量控制,歌词同步高亮的功能齐全的简易音乐播放器
  19. 论文查重的次数是否会有限制?
  20. java课程设计斗地主_Java课程设计---web版斗地主

热门文章

  1. python中的二维列表(实例)_python实现两个一维列表合并成一个二维列表
  2. O'Reilly总裁提姆-奥莱理:什么是Web 2.0
  3. 讲台计算机的英语怎么读,讲台的英语单词怎么写,英语怎么拼写!
  4. 我为什么读博, 以及我为什么不读博?这是个问题!
  5. 欧拉定理和费马小定理
  6. 数据处理之异常值处理
  7. “中年跳槽,伤筋动骨”:35岁跳槽,你可要想清楚
  8. centos7安装steam
  9. Linux命令之设置普通用户具有超级管理员权限sudo
  10. 埃氏筛_四种形式 ( pass even , bool , char , differently judge )