0xFE在C程序中意味着什么?

Nit*_*tin 6 c

在下面给出的程序中,

void main()
{

       int x=0xFE;

       int y=0xF3;
      .....
}
Run Code Online (Sandbox Code Playgroud)

什么值由x=0xFE和分配y=0xF3?什么是0x代表?

And*_*bel 15

使用0x之前写入值意味着它以十六进制表示法编写,其中数字0-9和附加"数字"AF用于获得具有基数16的数字系统.这样做的最大优点是每个十六进制数字恰好代表4位.

0xFE = 254
0xF3 = 243
Run Code Online (Sandbox Code Playgroud)

所以x = 254,y = 243.


Rud*_*uis 6

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

如果你写243,你的意思是

243 = 2*10^2 + 4*10^1 + 3*10^0 = 2*100 + 4*10 + 3 = 243
Run Code Online (Sandbox Code Playgroud)

在哪里^意味着"为了"的力量.这意味着我们的正常数字是基数10或十进制数.十六进制使用基数16,数字为0123456789ABCDEF0,其中0 = 0,... 9 = 9,A = 10,B = 11,... F = 15.所以243也可以写成

0xF3 = 15*16^1 + 3*16^0 = 15*16 + 3 = 243
Run Code Online (Sandbox Code Playgroud)

这就是你所看到的.换句话说,0xF3只是写入243的另一种方式,而0xFE是另一种写入254的方式(15*16 + 14 = 254).

优点是每个十六进制数字代表4位,因此可以使用2个十六进制数字来显示字节.如果你知道0x0是二进制的0000,依此类推,最多为0xF,即二进制的1111,有经验的用户可以很容易地"看到"一个字节中的位.

FWIW,八进制位于8位,因此唯一的数字是01234567.我总是觉得使用它有点尴尬.