C语言中0xFFFF表示什么

下列程序执行后的输出结果是 ( C )。
(A) -32767 (B) FFFE (C) -1 (D) -32768
main()
{ char x=0xFFFF; printf("%d \n",x--); }

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语言把数据使用二进制在内存中表示,但是还有一点:计算机是用补码来存储数据的。 即一个数将其转换成为二进制之后还要再转换成补码,才是最终在内存中的样子。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-30

代表10进制的65535,其中0x代表16进制。

C语言、C++、Shell、Python、Java语言及其他相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则代表十六进制(就如“O”代表八进制)。

进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(en:radix)或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。

扩展资料

应用

在网页设计上十六进制是很常用的。HTML和CSS使用十六进制的表示法来表示网页上的特定颜色。使用 # 的符号来表示而非用个别的符号表示十六进制。

24-bit 颜色可以用 #RRGGBB 的格式来表示,RR 是颜色中红色成分的数值,GG 是颜色中绿色成分的数值,BB 颜色中蓝色成分的数值。举个例子, 红色的阴影是十进制 238,9,63 可以编成 #EE093F。

其他进制--二进制

二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一。

为区别于其它进制,二进制数的书写通常在数的右下方注上基数2,或加后面加B表示,其中B是英文二进制Binary的首字母。

参考资料来源:百度百科-十六进制

参考资料来源:百度百科-进制

第2个回答  2013-07-12
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了。。本回答被网友采纳
第3个回答  推荐于2017-09-26
C语言中以0xFFFF表示该数的后十六位全是1,若该数类型为short型,则其表示的是-1,若为int型数,则表示65535。
以0x开头的数字表示十六进制数,由0~9及a~f(包括大写A~F,大写与小写对应)这十六个字符来表达,其中a~f对应表达10~15。
相应的八进制以0开头接0~7的数字表达。
第4个回答  2013-07-12
整型常数的后缀:在16位字长的机器上,基本整型的长度也为16位,因此表示的
数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。