Yêu cầu thg 9 15, 2018 2:48 CH 199 0 1
  • 199 0 1
0

ko hiểu cách Biểu diễn giá trị Trong ngôn ngữ C

Chia sẻ
  • 199 0 1

Trong ngôn ngữ C mình thấy họ định nghĩa bằng cách viết như thế này. Vậy biểu diễn 0x80 là hình thức biểu diễn gì vậy? convert sang hệ giá trị 10 số là như thế nào Bạn nhỉ?

#define P_TOA (0x80)

1 CÂU TRẢ LỜI


Đã trả lời thg 9 15, 2018 3:14 CH
Đã được chấp nhận
+7

Nó định nghĩa 1 hằng số có tên là P_TOA, có giá trị bằng 128. 0x ở đây là biểu diễn của hệ cơ số 16, hệ thập lục phân.

$ 0x80 = 816^1 + 016^0 = 128 $

Chia sẻ
Avatar Duc Son @stone89son
thg 9 16, 2018 4:47 SA

cám ơn Bạn nhé, Bạn có thể cho mình hỏi thêm, mình thấy dự án đó toàn định nghĩa giá trị bằng hệ cơ số 16 , tại sao họ ko dùng luôn hệ cơ số 10 luôn cho dễ hiểu nhỉ?

thg 9 16, 2018 5:52 SA

@stone89son Trên thực tế, bạn có thể tùy chọn định nghĩa hằng số theo cả 3 dạng là thập phân, bát phân và thập lục phân.

Tuy nhiên, các dự án phần mềm viết bằng C/C++ họ ưa định nghĩa hằng số bằng hệ thập lục phân(cơ số 16) hơn theo mình tìm hiểu thì có thể là do các lý do sau:

  1. Hệ 16 dễ dàng chuyển đổi về dạng bit(ex: 0101) hơn là hệ cơ số 10. Bạn có thể sẽ phải thực hiện các phép toán xử lý trên bit như xor, and, or, xnor,... Cơ số 16 giúp bạn nhìn thấy mối quan hệ giữa các bit tốt hơn trên cơ số 10 vì quá trình chuyển đổi đơn giản hơn. Tóm lại là dễ chuyển sang bit hơn.
  2. Thứ 2 là việc clean code. Ở hệ cơ số 10, bạn không được viết số 0 ở đầu, do đó khi có các hằng số khác nhau về số chữ số, code của bạn sẽ xấu hơn do các số không thể thẳng cột nhau 😃). (Đây cũng là 1 lý do tốt). Ví dụ: Cơ số 16:
#define a                           0x00001
#define b                           0x00201

Có số 10:

#define a                           1
#define b                           513

Bạn có thể đọc các phân tích khác ở đây: https://stackoverflow.com/questions/10920432/why-use-hexadecimal-constants

Avatar Duc Son @stone89son
thg 9 16, 2018 6:36 SA

@QuangPH uhm cám ơn Bạn nhé.

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí