强制类型转换相关

  • 1. 代码如下(C语言)
  • 2.为什么32768用short类型强制转换后变成-32768?
  • 3.为什么32768用char类型强制转换后变成0?
  • 相关链接

以下内容基于系统为32位,64位也行

1. 代码如下(C语言)

#include <stdio.h>
int main(){short a=(short)(32768);char c = (char)(32768);printf("%d\n",a);//-32768printf("%d\n",c);//0
}

2.为什么32768用short类型强制转换后变成-32768?

  • 易知short类型的范围为-32768~32767
  • 32768用二进制表示为:1000 0000 0000 0000
  • 由于short类型占2字节=16位,因此转换时,系统会查看这16位的数。我们知道,16位二进制数可以表示2^16个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,这个编码就是1000000000000000,因为任何一个原码都不可能在转成补码时变成1000000000000000。所以,人为规定1000000000000000这个补码编码为-32768。

3.为什么32768用char类型强制转换后变成0?

  • 易知char类型的范围为-256~255
  • 32768用二进制表示为:1000 0000 0000 0000
  • 由于char类型占1字节=8位,因此转换时,系统会只查看最后8位,因此得0000 0000,相当于将32768%256,得到的余数就是转换后的结果。显然结果为0
  • 如果用32769那么就会得到1。 想一想为什么?

相关链接

  • short的范围讲解,以及补码,原码。(转载)

32768强制转换成short类型和char类型为什么是-32768和0?相关推荐

  1. Cityscapes数据集转换成COCO类型和VOC类型

    本来想用本数据集拿来做基线测试,突然发现gtFine里面没有适合我小白看的xml或txt 十分痛苦 看了许多帖子 终于找到一位好心博主整理的内容 按照流程应该最后成功了 想必从coco转成其他数据类型 ...

  2. 数据库中的字段varchar类型和char类型的区别?

    数据库中的字段varchar类型和char类型的区别? 目录 数据库中的字段varchar类型和char类型的区别?

  3. java char和int的区别_int类型和char类型的区别

    下面三个定义式的区别: int i = 1;char i = 1;char i = '1'; int用来定义整型变量,char用来定义字符型变量,要清楚的知道三个定义式的区别,可以比较它们在内存中的存 ...

  4. byte类型和char类型

    byte字节类型是JAVA中最小的数据类型,它在内存中占8位,取值范围从-128到127, 赋值:byte i = 127; 注:byte型在赋值时,一旦超过127或小于-128,则会产生编译错误. ...

  5. c语言char数字转int补位,关于char强制转换成int到底是用0还是用1补位的猜想与检验...

    关于char强制转换成int到底是用0还是用1补位的猜想与检验 最近学C语言发现char强制转换时值会完全不同,而且变化很大,于是决定写代码测试一下. 先检验一下char型的-3和3在内存中分别怎么表 ...

  6. 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )

    此文章参考<深入理解计算机系统>P31. 先看如下代码:  12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main ...

  7. Java学习(4)—— 布尔类型、基本数据类型转换、基本数据类型和String类型的转换

    布尔类型 也叫Boolean类型,boolean只允许取true和false. boolean占一个字节. 适用于逻辑运算,流程控制语句. 有默认类型,是false.但是应该声明为成员变量或是静态变量 ...

  8. C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?

    在阅读尹圣雨<TCP/IP网络编程>(C语言示例)的时候,看到将sockaddr_in类型的struct的指针强制转换成了sockaddr类型的指针. 比如hello_client.c: ...

  9. java 父类强制转换为子类_[java]Java中父类强制转换成子类的原则

    Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用. 例: public class Test { public static void main(Str ...

  10. C#里氏转换,子类赋值父类,父类强制转换成子类的理解

    C#里氏转换,子类赋值父类,父类强制转换成子类的理解 最近在学习C#,在父类和子类的学习上有不理解的地方. Father f = new Son(); 这样的一个实例化程序中,内存时怎么样处理的,为什 ...

最新文章

  1. 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
  2. 【Google Play】声明广告权限 ( you must declare the AD_ID Permission when your app targets Android 13 )
  3. Redis实现发布与订阅(转)
  4. 京东ajax怎么用,使用Ajax、json实现京东购物车结算界面的数据交互实例
  5. shop--8.店铺管理页面的开发
  6. 从“Liskov替换原则”和“Refused Bequest”看“正方形为什么不能继承长方形”
  7. DNSlog注入思路
  8. php的变量命名规则
  9. ClickHouse Kafka引擎表 Application maximum poll interval ... leaving group
  10. linux基础 linux命令跟踪 strace命令
  11. 我国OLED技术和OLED显示屏的发展历程
  12. 【微信小程序】微信小程序开发学习记录
  13. 如何使用“MRT”恶意软件删除工具
  14. 解决谷歌翻译不能使用的问题
  15. CLI 钱包操作(十):订阅设置
  16. HashMap夺命连环问,你扛得住吗
  17. Oracle alter table
  18. GitHub 标星 167k!你要的优质书籍这都有,还开源!
  19. 如何在Windows上创建,解压,更新.tar.gz压缩包
  20. 随机森林算法及其实现(1)

热门文章

  1. 计算机信息中心管理制度,信息技术中心内部管理制度(试行)
  2. burst传输 - 理解
  3. 读书是走马观花还是咬文嚼字?
  4. 收集利用 Kotlin 进行 Android 开发的开源库,扩展,工具,开源项目,资料等高质量资源
  5. VBA学习笔记之单元格
  6. 埃默里大学有计算机专业吗,埃默里大学计算机专业怎么样?
  7. oracle18c静默安装教程,Oracle 18c 通过 RPM 包安装数据库示例
  8. animejs走马灯_Javript动画特效插件anime.js
  9. Excel如何批量删除公式只保留数值
  10. 迪文屏幕的学习和开发