signed型数据在计算机底层的储存

      计算机底层只认识数据0、1,其余数据都不认识,因此任何数据到计算机底层都变成0和1.这么一说  那么负数是怎样的存储的呢?

     其实计算机会把基础类型的最高位腾出来作为标志位来储存正数跟负数的。规则如下:最高位如果是1,表明是负数。最高位为0,表明是正数。这样就能理解一个32位的 signed int的表示范围为:-2的31次方~2的31次方-1;8位的char型表示范围为-2的7次方~2的7次方-1;而8位的unsigned char型表示范围为0~2的8次方-1。

   在计算机系统中,数值一律按照补码来存储,主要原因是使用补码,可以将符号位和其他位统一处理;同时减法也可按照加法来处理。另外,两个用补码表示的数相加时,如果最高位(即符号位)有进位时则进位被舍弃。正数的补码与其原码一致;负数的补码:符号位为1,其余为该数绝对值的原码按位取反,然后整个数相加1.例如 -1的补码为0xff.

你可能感兴趣的:(编程心得)