C语言中0xFFFF表示什么
2个回答
展开全部
0XFFFF如果代表一个unsigned
int
数据
那么它的值就是
4
294
967
295也就是
无符号整型所能表示的最大值。
0XFFFF如果代表一个signed
int
数据
那么它的最左边的一位是1,即它必定是一
个负数。这个值是-1。
0X
FFFF如果是一个有符号的数字,因为它的最高位是1,所以这个数是个负数。简单的
在内存中的存储形式为
1111
1111
1111
1111
1111
1111
1111
1111,这个是补码。
根据规则将上面的数减去二进制的1,即减去0000
0000
0000
0000
0000
0000
0000
0001,得到
1111
1111
1111
1111
1111
1111
1111
1110,然后按为取反,得到0000
0000
0000
0000
0000
0000
0000
0001,这就是原码,即数字的二进制表示方式,这个数字就是-1了。
扩展资料
C语言中0xFFFF的计算规则及注意事项:
1、C语言里的数据在内存中的表示,数据会因为读取的方式不同而导致读取出来的结果不同。同样的数据如果按照int和char来读,结果是不同的,如果按照有符号和无符号来读,结果也可能不同。
2、C语言的数据在内存中用二进制来表示,由于无符号的数据不用腾出最左边的一位来表示正负,
正是由于多出来这一位,我们知道这相当于二进制中的把数据左移一位,扩大二倍。所以无符号
的数据能存储的数值范围要比有符号数大一倍。
3、虽然C语言把数据使用二进制在内存中表示,但是还有一点:计算机是用补码来存储数据的。
即一个数将其转换成为二进制之后还要再转换成补码,才是最终在内存中的样子。
int
数据
那么它的值就是
4
294
967
295也就是
无符号整型所能表示的最大值。
0XFFFF如果代表一个signed
int
数据
那么它的最左边的一位是1,即它必定是一
个负数。这个值是-1。
0X
FFFF如果是一个有符号的数字,因为它的最高位是1,所以这个数是个负数。简单的
在内存中的存储形式为
1111
1111
1111
1111
1111
1111
1111
1111,这个是补码。
根据规则将上面的数减去二进制的1,即减去0000
0000
0000
0000
0000
0000
0000
0001,得到
1111
1111
1111
1111
1111
1111
1111
1110,然后按为取反,得到0000
0000
0000
0000
0000
0000
0000
0001,这就是原码,即数字的二进制表示方式,这个数字就是-1了。
扩展资料
C语言中0xFFFF的计算规则及注意事项:
1、C语言里的数据在内存中的表示,数据会因为读取的方式不同而导致读取出来的结果不同。同样的数据如果按照int和char来读,结果是不同的,如果按照有符号和无符号来读,结果也可能不同。
2、C语言的数据在内存中用二进制来表示,由于无符号的数据不用腾出最左边的一位来表示正负,
正是由于多出来这一位,我们知道这相当于二进制中的把数据左移一位,扩大二倍。所以无符号
的数据能存储的数值范围要比有符号数大一倍。
3、虽然C语言把数据使用二进制在内存中表示,但是还有一点:计算机是用补码来存储数据的。
即一个数将其转换成为二进制之后还要再转换成补码,才是最终在内存中的样子。
展开全部
0xFFFF,是16进制的
FFFF,
转化成二进制就是
1111
1111
1111
1111(2
*
8
=
16
位,2字节)
1111
1111
1111
1111
在计算机里面,
就是
-1
的补码。。
(补码的定义:正数最高位为0,负数为1,然后绝对值按位取反,最后加1,即为补码)
1111
1111
1111
1111,最高位为1,表示负数,剩下的先减
1
,变为
111
1111
1111
1110,然后按位取反,变为
000
0000
0000
0001,也就是说绝对值为
1。。
综上所述,就是
-1了。。
FFFF,
转化成二进制就是
1111
1111
1111
1111(2
*
8
=
16
位,2字节)
1111
1111
1111
1111
在计算机里面,
就是
-1
的补码。。
(补码的定义:正数最高位为0,负数为1,然后绝对值按位取反,最后加1,即为补码)
1111
1111
1111
1111,最高位为1,表示负数,剩下的先减
1
,变为
111
1111
1111
1110,然后按位取反,变为
000
0000
0000
0001,也就是说绝对值为
1。。
综上所述,就是
-1了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询