截断与扩展

位截断

在日常的编程中,经常会遇到类型转换,比如将short int 转为int,或者将int转为short int。我们知道将数据转为更大数据类型时,不会产生什么错误,但是将数据转为更小数据类型时,得到的结果会有很大差别。这就是位截断造成的。

这里我们声明两个数(int为32位,short为16位)
short的取值范围:-32768-32767 int的取值范围:-2147483648~2147483647

int n = 53193;       //n的二进制补码为00000000 00000000 11001111 11001001
short m = (short)n;  //m的二进制补码为11001111 11001001

m是shor类型,截断了n类型的低16位,m的值为-12343

位扩展

截断一个大数据类型会产生数据值的改变,小数据类型扩展成大数据类型不会改变值。
声明两个数(int为32位,short为16位)

short n = -12343;   //n的二进制补码为11001111 11001001
int m = (int)n;     //m的二进制补码为11111111 11111111 11001111 11001001(用1填充多出的位)

扩展为大数据类型时,多出的高位用原最高位的数字填充

short n = 12243   //n的二进制补码为00101111 11010011
int m = (int)n     //m的二进制补码为00000000 00000000 00101111 11010011(用0填充多出的位)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,010评论 18 399
  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,700评论 8 114
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,452评论 1 10
  • 136.泛型 泛型代码让你可以写出灵活,可重用的函数和类型,它们可以使用任何类型,受你定义的需求的约束。你可以写出...
    无沣阅读 5,435评论 0 4
  • 思念如风 逆着风的方向 吹动着你的背影 淡淡的 轻轻的 嗅不出 抓不着 思念如雪 路灯下雪愈发白 踏雪而行 咯咯...
    乖乖先生阅读 1,397评论 0 0