十进制 4294967295
1、在C语言中整型常量的数据类型默认为int,所以unsigned int a = -1中,-1的类型是int类型。实际上是有一个隐式转换,即将int类型转成unsigned int类型。 这个转换的意义不大,因为没有超出unsigned类型的表示范围,所以a的机器码依然是-1的机器码。2、printf输出函数的控制字符是%d,即输出有符号...
补码怎么表示-1呢?比如说用两位来表示就是 11, 三位就是111,4位就是1111。最高位权重为 -1; 分别 -1 = 1*(-2) + 1, -1 = 1*(-2^2) + 1* 2^1 +1 *2^0, -1 = 1*(- 2^3) + 1*(2^2)+1*(2^1)+1*(2^0)可知32位情况下 -1 表示为 0xffffffff,这个值对...
int补码-1:ffffh(十六进制),unsigned int 表示为2的33次方减一好像是65535,因为int展开后第一个二进制位表示为符号位,而unsigned int 没有符号位,全部都是数值位,计算机存储时按补码存储,但读取时方式不同表示的数也不一样。
unsigned int虽然是无符号型,但是存储方式和int型完全一样,同样是四个字节大小。因此存储 -1 时 ,同样是保存为 0xFFFFFFFF ,但是如果按照无符号型输出,就相当于无符号型的最大值。比如 int 型的-1 如果用 %u 输出的话,也会是一个很大的数。
(unsigned)-1等于4294967295 计算机中,整数采用补码存储 整数int类型,在计算机中占四个字节,一个字节8位,共32位 有如下规定:原码:以第一位为符号位,其余位表示数值,如-1原码为:10000...0001(两个1之间有30个0)反码:正数反码就是其原码,负数的反码为:符号位不变,其余位按位取反,如-...
当一个有符号整数(signed int)的值为-1时,如果将其转换为无符号整数(unsigned int),则会发生溢出,导致结果变成65535。 这是因为有符号整数和无符号整数在内存中的表示方式不同。有符号整数使用二进制补码表示,而无符号整数使用二进制表示。当将-1转换为无符号整数时,它的二进制补码表示为全1(例如,在16位二进制...
对呀!-1的16进制就是8个F或f,当作无符号数解释时就是这8个F的真值4294967295。
但是unsigned int,int类型会被隐式转化为unsigned类型,-1的位级表示是0xFFFFFFFF,于是这里两个unsinged类型的相乘。0xFFFFFFFF 0x3 = 0x2FFFFFFFD,由于是取其商,商为32位,因此对于乘得的结果进行阶段,留下32位,即0xFFFFFFFD,由于是%u,解释为unsigned类型,十进制显示为4294967293。