整数的类型转换(位扩展和位截取)

整数类型有以下几种:short [int]、unsigned short [int]、int、unsigned [int] ([]内可省略) 这四种整数类型的特征有两种:位数长短和有无符号。 转换大体可以分为位扩展和位截取,我们主要说的是位扩展。 一、位扩展 而在实际编程中遇到的类型转换有三种: 1、有无符号的转换(位数相同) 位级表示不变,只是解释方法发生了变化。 2、位数的扩展(符号类型相同) 有符号数扩展时填充的是符号位,无符号数扩展时填充的是零。 3、符号的转换和位数的扩展二者都有 当二者同时存在时,位数扩展的优先级高于符号的转换。所以先进行位扩展(有符号数扩展符号位,无符号数扩展零),然后进行符号转换。 例: short sx = -12345; //-12345 unsigned short usx = sx; // 53191 int x = sx; //-12345 unsigned int ux = sx; //4294954951 二、位截取 位截取直接将原数据截取相应的字长,然后按照相应的方法进行

你可能感兴趣的:(整数的类型转换(位扩展和位截取))