下列程序执行后的输出结果是 ( 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语言把数据使用二进制在内存中表示,但是还有一点:计算机是用补码来存储数据的。 即一个数将其转换成为二进制之后还要再转换成补码,才是最终在内存中的样子。
代表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的首字母。
参考资料来源:百度百科-十六进制
参考资料来源:百度百科-进制