java解惑之多重类型

来源:互联网 发布:maxdos网络克隆工具 编辑:程序博客网 时间:2024/06/07 22:18
不管char型数值转换成什么型,都执行零扩展

最初的数值类型是有符号的,则执行符号扩展


符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0. 
比如一个用一个8位二进制表示-1,则是10000001 
如果把这个书用16位二进制表示时,则为11111111 10000001 高位全都是1,这个叫做符号扩展,主要用于对其操作数。 

零扩展:全补零,不论其符号位是多少,高8位全都补0.

package ch2_expressive_puzzlers.puzzle_6;public class Multicast {    public static void main(String[] args) {        System.out.println((int) (char) (byte) -1); //     int->byte ->char ->int                              //bits   32   8     16      32    }}//out  65535=2^16-1//out         int   ->                byte ->    char ->             int//bits         32                      8           16                 32//11111111111111111111111111111111  11111111  1111111111111111   00000000000000001111111111111111

0 0
原创粉丝点击