2011-08-07 63 views
5

Trong chương trình đưa ra dưới đây,0xFE có nghĩa là gì trong chương trình C?

void main() 
{ 

     int x=0xFE; 

     int y=0xF3; 
     ..... 
} 

gì giá trị được phân công của x=0xFEy=0xF3? 0x đại diện cho điều gì?

+1

Uhm .. [254] (http://en.wikipedia.org/wiki/254_%28number%29) và [243] (http://en.wikipedia.org/wiki/243_%28number%29)? – cnicutar

+2

Câu trả lời thực dụng của tôi là: sử dụng 'printf' :) –

Trả lời

14

Viết giá trị bằng 0x trước khi có nghĩa là nó được viết bằng hexadecimal notation, trong đó các số 0-9 và số "bổ sung" được sử dụng để lấy một hệ thống số với cơ số 16. Lợi thế lớn của điều này là mỗi hệ thập lục phân chữ số đại diện cho chính xác 4 bit.

0xFE = 254 
0xF3 = 243 

Vậy x = 254 và y = 243.

+0

giá trị nào sẽ được chỉ định trong x và y? – Nitin

+3

@downvoter: Vui lòng giải thích. –

+0

@Nitin: câu trả lời cho biết: x sẽ được gán 254, y sẽ được gán 243. '0xFE' và' 254' giống hệt nhau, chỉ có '0xFE' là ký hiệu thập lục phân và' 254' là ký hiệu thập phân . IOW, '0xFE' chỉ là một cách khác để viết '254'. Xem thêm tại đây: http://en.wikipedia.org/wiki/Hexadecimal –

2

Các giá trị trong hệ thập lục phân vì chúng đều bắt đầu bằng nhận dạng 0x. Để chuyển đổi các giá trị, bạn có thể sử dụng máy tính của bạn trên chế độ lập trình hoặc google. http://screensnapr.com/v/aQEPYk.png

+1

Không ai làm chuyển đổi base16-to-base10 bằng bút chì và giấy nữa? :) –

+1

Không ai làm điều đó trong đầu họ nữa? Nó khá dễ dàng cho 2-3 chữ số nếu bạn biết bội số của bạn của 16 ... –

+0

@ R: Ok, nhanh chóng, không gian lận - 0x0D92 trong thập phân là gì? –

6

Số có thể được trình bày theo nhiều cách khác nhau. Trong C, bạn có thể sử dụng số thập phân (ví dụ: 243), bát phân (ví dụ: 0363) hoặc hệ thập lục phân (0xF3).

Nếu bạn viết 243, bạn có nghĩa là

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

nơi ^ có nghĩa là "sức mạnh của". Điều đó có nghĩa là số bình thường của chúng tôi là 10 hoặc số thập phân. Hệ thập lục phân sử dụng cơ sở 16 và các chữ số là ABCDEF, trong đó 0 = 0, ... 9 = 9, A = 10, B = 11, ... F = 15. Vì vậy 243 cũng có thể được viết là

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

Đó là những gì bạn thấy. Nói cách khác, 0xF3 chỉ là một cách khác để viết 243, và 0xFE là một cách khác để viết 254 (15 * 16 + 14 = 254).

Lợi thế là mỗi chữ số thập lục phân đại diện cho 4 bit, do đó, 2 chữ số thập lục phân có thể được sử dụng để hiển thị một byte. Nếu bạn biết rằng 0x0 là 0000 ở dạng nhị phân, và cứ như vậy, lên đến 0xF, là 1111 ở dạng nhị phân, người dùng có kinh nghiệm có thể dễ dàng "xem" các bit trong một byte.

FWIW, bát phân nằm trong cơ sở 8, do đó các chữ số duy nhất là. Tôi luôn thấy nó hơi khó xử dụng.