取出某个数据,实际上是拿出其内存中的补码
同时,在计算机内部存储的也是数据的二进制补码。可是为什么要存储二进制的补码呢?因为可以将符号位和数值位同意,便于计算。
%d:是10进制的形式打印有符号的整数
%u:是10进制的形式打印无符号的整数
当打印是为%u的时候,尽管存储的是负数的补码,但是依旧会把补码视为无符号形式的数据,直接以该补码计算为10进制
关于什么是整型提升:
整型提升:有符号,高位位置补符号位置;无符号,高位位置补0
什么叫整型提升?例如一个int类型,以%d的形式打印,是十进制整型类型,就是4个字节,32个比特位,然而char只有一个字节,8个比特位,需要将前面(高位)缺少的24个比特位置补齐才能表示一个整型,才能以%d的形式打印出来。其他的float类型,如果也要以整型int类型打印出来,也需要进行整型提升。
所以,补位就叫做整型提升。那么,这个补位要怎么补呢?注意,因为数据存储在内存中是以二进制的补码形式进行存储,因此整型提升,也是在补码的基础上进行补位。
所以,整型提升的规则是:整型提升:有符号,高位位置补符号位置;无符号,高位位置补0
因此,整型提升,看数据的类型,如果是有符号,补符号位;无符号,补0
这就类似于,给你一根竹竿32米长,但是你们家就8米那么长,放不下,怎么办?没办法