Tag: 二进制转换

为什么unsigned int 0xFFFFFFFF等于int -1?

在C或C ++中,size_t(一个unsigned int数据types)可以容纳的最大数量与向该数据types转换-1相同。 例如,请参阅size_t的无效值 为什么? 我的意思是,(谈论32位整数)AFAIK最高有效位将符号数据types(即位0x80000000形成一个负数)保存。 那么,1是0x00000001 .. 0x7FFFFFFFF是int数据types可以容纳的最大正数。 然后,AFAIK -1 int的二进制表示应该是0x80000001(也许我错了)。 为什么/如何将这个二进制值转换为任何完全不同的(0xFFFFFFFF)时,铸造整数为无符号? 或..如何可能形成一个二进制-1的0xFFFFFFFF? 我毫不怀疑在C:((unsigned int)-1)== 0xFFFFFFFF或((int)0xFFFFFFFF)== -1是等于1 + 1 == 2,我只是想知道为什么。