在下面给出的程序中,
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.
数字可以用不同的方式表示.在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.我总是觉得使用它有点尴尬.