-1在16进制中为什么是0xFFFFFFFF

急寻高手解答

因为电脑中是用的补码表示法,补法的表示即是把负数的原码取反再加1,负1的话取反就是取个位外全是1,然后再加1当然就是全是1了,4个字节的话,就是0xFFFFFFFF了 (011111111111111111111111111111111)
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-29
取反 四个字节全部都填满了 就是FFFFFFF了

-1在16进制中为什么是0xFFFFFFFF
因为电脑中是用的补码表示法,补法的表示即是把负数的原码取反再加1,负1的话取反就是取个位外全是1,然后再加1当然就是全是1了,4个字节的话,就是0xFFFFFFFF了 (011111111111111111111111111111111)

c语言 -1 用16进制表示输出时ffff,为什么?
过程如下:原码10000000000000000000000000000001 反码11111111111111111111111111111110 补码11111111111111111111111111111111 以上为二进制,换算成十六进制就是0XFFFF了

我想问一下,-1以十六进制形式输出,结果为什么是ffff?
因为单字的时候只有16位,所以就变成16个0了(首位溢出了)。此时正好为0。和我们理解的10进制的加法一样。故-1在16进制中是0xffff,-2是0xfffd

我是C语言程序设计初学者,问十进制-1的十六进制怎么是ffff呢?
加上最高位的1就是1111 1111转换成16进制就是0xFFFF 实际上计算机上面都是补码来保存数据的 所以-1转换成16进制就0xFFFF

c语言中 int a=-1 为什么-1= 0xffffffff
32位的意思是,计算机中用二进制表示的话二进制的位数是32位,每四位二进制可以由一位十六进制代替,那么用32位的二进制表示的数据用十六进制表示就是8位。例如,1111'1111'1111'1111'1111'1111'1111'1111等价于ffffffff 0x是十六进制的前缀,h可以说是十六进制的后缀。二进制的后缀是b,例如写二...

16进制FFFF转换为十进制 为-1 为什么?
十六进制0xFFFF可以代表 有 符号数字为 -1.有符号数,是按照补码的形式存放的.0xFFFF写成二进制,共有16个1.最高位代表符号,1,代表“-”号;后面的15位,需要“求反加一”才是绝对值,这15个1,即可求出绝对值是1.所以,把十六进制0xFFFF转换成十进制就等于-1.或者:0xFFFF :要想转换为十...

在16位机器上-1的二进制和16进制表示为
十六进制 0xFFFF 前面说到了用补码来表示负数,那么什么是补码呢?子啊二进制中负数的表示曾经有两种思路:用既定的存储空间中的第一位表示正负号,1代表负,0代表正,以16位为例:-1就表示为 1000 0000 0000 0001 这里第一位的1表示这个数字是负的 1在这里的表示为 0000 0000 0000 0001 这样...

int a=-1; printf("%x",a);为什么输出是ffff?
a= -1 则其在内存中以补码的形式存在。1的原码是 0000 0000 0000 0001 则-1的反码为 1111 1111 1111 1110 -1的补码为反码+1 也就是 1111 1111 1111 1111 转换成十六进制也就是 F F F F 所以结果为 ffff

为何输出结果是-1?
0xFFFF,是16进制的 FFFF, 转化成二进制就是 1111 1111 1111 1111(2 * 8 = 16 位,2字节)1111 1111 1111 1111 在计算机里面, 就是 -1 的补码。。(补码的定义:正数最高位为0,负数为1,然后绝对值按位取反,最后加1,即为补码)1111 1111 1111 1111,最高位为1,表示负数,剩下...

为什么c语言输出-1不是65535 ?
变量x为无符号数,2Bytes的存储单元的二进制存储的数为 1111 1111 1111 1111,即0xFFFF。用%d输出是该变量存储单元内容的有符号数,此时第一位1代表负数。C语言默认有符号数存储为补码,所以:补码:1111 1111 1111 1111 反码:1111 1111 1111 1110 原码:1000 0000 0000 0001 因此输出原码的十进制,...

相似回答