在C语言程序中,0xFE代表什么意思?

8
在下面的给定程序中,
void main()
{

       int x=0xFE;

       int y=0xF3;
      .....
}
< p > x=0xFEy=0xF3 分别被赋予了什么值?0x 代表什么意思?< /p >




1
嗯...254243 - cnicutar
2
我的实用回答是:使用 printf :) - Karoly Horvath
3个回答

16

在数值前加上0x,表示使用十六进制表示法来写入数字,其中使用数字0-9和额外的“数字”A-F来得到一个基于16的数字系统。其最大的优势是每个十六进制位恰好代表4个二进制位。

0xFE = 254
0xF3 = 243

那么x = 254,y = 243。


x和y将被分配什么值? - Nitin
@Nitin:答案已经说得很清楚了:x将被赋值为254,y将被赋值为243。0xFE254是完全相同的数字,只不过0xFE是十六进制表示法,而254是十进制表示法。换句话说,0xFE只是写254的另一种方式。更多信息请参见:http://en.wikipedia.org/wiki/Hexadecimal。 - Rudy Velthuis

6

数字可以用不同的方式表示。在C语言中,你可以使用十进制数(例如243),八进制数(例如0363)或十六进制数(0xF3)。

如果你写243,你的意思是

243 = 2*10^2 + 4*10^1 + 3*10^0 = 2*100 + 4*10 + 3 = 243

其中^表示“的次方”。这意味着我们平常使用的数字是十进制,也就是基数为10。而十六进制使用的是基数为16的数字,其数字包括0123456789ABCDEF,其中0等于0,... 9等于9,A等于10,B等于11,... F等于15。因此,243也可以写成

0xF3 = 15*16^1 + 3*16^0 = 15*16 + 3 = 243

这就是你所看到的。换句话说,0xF3只是243的另一种写法,0xFE是254的另一种写法(15 * 16 + 14 = 254)。
优点在于每个十六进制数字代表4位,因此可以使用2个十六进制数字显示一个字节。如果你知道0x0在二进制中表示0000,以此类推直到0xF,在二进制中表示1111,有经验的用户可以轻松“看到”一个字节中的位。
顺便说一下,八进制是基于8的,只有01234567这些数字。我始终觉得使用起来有些麻烦。

2
值是十六进制的,因为它们前面有0x标识符。 要转换这些值,您可以使用计算机计算器上的程序员模式或谷歌搜索。 http://screensnapr.com/v/aQEPYk.png

1
现在还有人用纸和笔进行十六进制到十进制的转换吗? :) - Joe Enos
1
还有人能够在脑海中计算吗?如果你知道16的倍数,对于2-3位数字来说这很容易... - R.. GitHub STOP HELPING ICE
1
@R: 好的,快点,不要作弊——0x0D92 转换成十进制是多少? - Joe Enos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接