Trong bài xích này mình vẫn giới thiệu cùng với chúng ta một vài khái niệm về hình trạng số cơ phiên bản hay thực hiện trong lập trình sẵn nhúng
Mục tiêu
Hiểu được số nhị phân (binary), số thập lục phân(hexadecimal), kiểu dáng số nguyên ổn gồm vệt cùng ko vết (signed và unsigned integers)Cách đổi khác giữa các kiểu sốGiới thiệu
Chúng ta đang thừa thân quen với hệ thập phân, tức là những số với cái giá trị là 0,1,2,3,4,5,6,7,8,9, hệ nhị phân cũng như nhưng lại chỉ bao gồm 2 giá trị là 0,1 cùng hệ thập lục phân đã thực hiện những số có mức giá trị là 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, ở chỗ này bản thân xin đi qua một trong những ví dụ để những chúng ta có thể chũm được một số biện pháp thay đổi cơ bản.Hệ thập phân:1984 = 1•103 + 9•102 + 8•101 + 4•100
273.15 = 2•102 + 7•101 + 3•100 + 1•10-1 + 5•10-2Hệ nhị phân:
011010102 = 0•27 + 1•26 + 1•25 + 0•24 + 1•23 + 0•22 + 1•21 + 0•20 = 64+32+8+2 = 106Hệ thập lục phân:
0x12AD = 1•163 + 2•162 + 10•161 + 13•160 = 4096+512+160+13 = 4781
Chuyển thay đổi thân số nhị phân và thập phân
Hầu không còn những số nhị phân được lưu lại vào bộ nhớ lưu trữ của máy tính sẽ có được độ nhiều năm là 8, 16, 32 bit. 8-bit được Hotline là một trong byte, 16-bit thì được điện thoại tư vấn là halfword với 32-bit được Điện thoại tư vấn là word.
Bạn đang xem: Hexadecimal là gì
Chuyển trường đoản cú nhị phân thanh lịch thập phân
Ví dụ: Giá trị thập phân của số nhị phân 8 bit 111111112 là từng nào ?
111111112 = 1•27 + 1•26 + 1•25 + 1•24 + 1•23 + 1•22 + 1•21 + 1•20 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
Ví dụ: Giá trị thập phân của số nhị phân 8 bit 011010102
011010102 = 0•27 + 1•26 + 1•25 + 0•24 + 1•23 + 0•22 + 1•21 + 0•trăng tròn = 64+32+8+2 = 106
Chuyển tự thập phân quý phái nhị phân
Ví dụ: Giá trị nhị phân của số thập phân 123123/2 = 61 dư 1650% = 30 dư 130/2 = 15 dư 015/2 = 7 dư 17/2 = 3 dư 13/2 = 1 dư 1một nửa = 0 dư 1Giá trị số nhị phân là 01111011Ví dụ: Giá trị nhị phân của số thập phân 254254/2 = 127 dư 0127/2 = 63 dư 163/2 = 31 dư 131/2 = 15 dư 115/2 = 7 dư 17/2 = 3 dư 13/2 = 1 dư 13/2 = 1 dư 1Giá trị số nhị phân là 11111110
Chuyển thay đổi giữa số nhị phân cùng thập lục phân
Số nhị phân là ngôn từ mặc định của dòng sản phẩm tính, tuy vậy gây ra vô số hoảng sợ mang đến họ, bạn test tưởng tượng xem nếu với một dãy tài liệu toàn 010010101010101010101 điều này thì gồm kinh hãi ko ? Để dễ dàng Lúc thao tác làm việc với các số nhị phân thì người ta áp dụng những số gồm liên quan gọi là số thập lục phân (hexadecimal).
Với số thập lục phân sẽ sở hữu được cực hiếm là những số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Trong các máy tính thì không khác nhau khi viết hoa hoặc viết thường xuyên những vần âm trong các thập lục phân bắt buộc 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F và 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f được xem là đồng nhất.
Chúng ta hay Gọi số thập lục phân là số “hex” và để biệt lập với các số không giống thì thông thường có 0x hoặc $ ở phía đằng trước số thập lục phân, vào C hay được dùng là 0x. Các số thập lục phân cơ bản 160, 161, 162, 163,… hoặc 1, 16, 256, 4096,…
Nibble thường xuyên được dùng để làm có mang 4 bit nhị phân hoặc 1 số thập lục phân (16 = 24), mỗi 4-bit nibble này đang tương xứng với cùng 1 số hex nlỗi hình sau

Để gửi tự số nhị phân(Binary) về thập lục phân(Hexadecimal) và ngược lại thì chúng ta vẫn coi hình minc họa sau

Chuyển trường đoản cú thập lục phân quý phái nhị phân
Cách 1: Chuyển từng số trong số hex thanh lịch nibble.
Cách 2: Kết hợp những nibble lại thành số nhị phân.
Ví dụ: Chuyển số hex 0x40 về số nhị phân
Đầu tiên phân chia từng số hex ra với chuyển về số nhị phân 0x4 = 01002 và 0x0 = 00002 . Sau kia phối kết hợp 2 số đó lại thành một là 010000002 . Vậy 0x40 = 010000002
Ví dụ: Chuyển số hex 0x63F về số nhị phân
Thứ nhất phân chia từng số hex ra cùng đưa về số nhị phân 0x6 = 01102 với 0x3 = 00112 ,0xF = 11112 . Sau đó phối kết hợp 3 số đó lại thành một là 0110001111112 . Vậy 0x63F = 0110001111112
Chuyển từ nhị phân sang trọng thập lục phân
Bước 1: Chia những số nhị chia thành những nibble hợp lý.
Cách 2: Chuyển những nibble này thành số hex tương ứng.
Ví dụ: Chuyển số nhị phân 010001012 về số hex
Trước hết phân tách số nhị tạo thành team 4 bit 01002 = 0x4 với 01012 = 0x5. Tiếp tục phối hợp 2 số đó lại thành 1 là 0x45. Vậy 010001012 = 0x45
Ví dụ: Chuyển số nhị phân 1100101010112 về số hex
Trước tiên phân chia số nhị tạo thành team 4 bit 11002 = 0xC với 10102 = 0xA, 10112 = 0xB. Tiếp tục kết hợp 3 số đó lại thành một là 0xCAB. Vậy 1100101010112= 0xCAB
Vậy cực hiếm thập phân của số thập lục phân 8 bit 0xFF là từng nào ?
0xFF = 15•161 + 15•160 = 255
Precision và Byte
Precision có ý nghĩa là số giá trị đơn nhất hoặc các cực hiếm biệt lập, nó được thể hiện dưới dạng alternative(số núm thế), byte, hoặc binary bit (bit nhị phân).
Ví dụ: Định dạng của một số trong những 8-bit rất có thể màn trình diễn được 256 số không giống nhau. Cụ thể với 8-bit của DAC(chuyển đổi số tương tự) hoàn toàn có thể tạo ra được 256 cực hiếm analog output hoặc với 8-bit ADC(biến đổi tương tự số) thì rất có thể đo được 256 quý hiếm khác nhau từ analog đầu vào.
Ta có thể xem bảng sau nhằm biết được quan hệ giữa precision trong bit nhị phân và trong alternative sầu. Ký hiệu <
Ví dụ:<<2.1>>, <<2.9>> với <<3.0>> đang bởi 3.

Một byte vẫn bao hàm 8-bit cùng với từng bit trường đoản cú b7,…,b0 là những số nhị phân có giá trị là một trong hoặc 0. b7 hay được call là most significant bit (MSB) xuất xắc còn gọi là bit gồm trọng số lớn số 1, với b0 là least significant bit (LSB) hay bit gồm trọng số nhỏ tuổi tuyệt nhất.

Nếu 1 byte được dùng để màn biểu diễn số unsigned thì quý giá của số này là
N = 128•b7 + 64•b6 + 32•b5 + 16•b4 + 8•b3 + 4•b2 + 2•b1 + b0
Có một xem xét là trọng số của bit n là 2n cùng gồm tới 256 số unsigned 8-bit khác nhau, số nhỏ duy nhất là 0 và số lớn số 1 là 255.
Ví dụ: 000010102 là 8+2 hoặc 10
Dường như với LSB thì ta hoàn toàn có thể biết được một trong những là số chẵn(even) tuyệt lẻ (odd)
Ví dụ:

2’s Complement
Trước Lúc bắt đầu thì tất cả một số điểm như sau:
Nếu bit nhị phân trọng số rẻ là 0 thì đó là số chẵn.Nếu bit quanh đó cùng mặt cần của n bit là 0 thì số thì số kia phân chia không còn mang lại 2n.Với một vài 8-bit unsigned, giả dụ bit 7 là low (0) thì số kia sẽ có quý giá từ 0 – 127, với bit 7 là high (1) thì số sẽ có quý giá trường đoản cú 128 – 255.giữa những biện pháp thứ nhất để màn biểu diễn số signed được Call là one’s complement. Với phương pháp này thì vẫn thực hiện đảo toàn thể bit để có được số âm.
Ví dụ: Nếu số 25 =000110012 thì số -25 = 111001102. Do kia một số 8-bit one’s complement sẽ có được giá trị tự -127 tới +127. MSB đang là bit sign (bit bao gồm dấu) bằng 1 nếu chính là số âm. Khó ăn ở trong phần là nếu như cần sử dụng dạng nlỗi này thì sẽ sở hữu 2 số 0 là +0 = 000000002, cùng –0 = 111111112. Như vậy thì không lô ghích cho lắm. Ngoài ra vụ việc quan trọng là số one’s complement không có dạng cơ phiên bản. Two’s complement ra đời để khắc phục điều này.
Xem thêm: Mua Xe Trả Góp Cần Những Giấy Tờ Gì? Óp Cần Những Gì? Hướng Dẫn Mua Xe Từ A
Với two’s complement phương pháp tiến hành như thể với one’s complement, tuy nhiên cùng thêm một.
Ví dụ: Nếu số 25 =000110012 thì -25 = 111001112.
Vậy cực hiếm của một trong những signed 8-bit two’s complement là
N = -128•b7 + 64•b6 + 32•b5 + 16•b4 + 8•b3 + 4•b2 + 2•b1 + b0
Ta rất có thể xác minh được những yếu tắc cơ phiên bản của số 8-bit signed là -128, 64, 32, 16, 8, 4, 2, 1.
Chúng ta tiếp tục qua một số trong những ví dụ nữa coi sao
Ví dụ: Giá trị của số 11100111 dưới dạng signed với unsigned integer
Giá trị Unsigned = 1 *27 + 1 *26 + 1 *25 + 0 *24 + 0 *23 + 1 *22 + 1 *21 + 1 *20 = 231Giá trị Signed = -1 *27 + 1 *26 + 1 *25 + 0 *24 + 0 *23 + 1 *22 + 1 *21 + 1 *20 = -25
Chuyển đổi số 45 decimal về 8-bit binary và hexadecimal
45=32+8+4+1, đề xuất 45 = 001011012 = 0x2D.
Chuyển đổi số 200 decimal về 8-bit binary với hexadecimal
200=128+64+8, phải 200 = 110010002 = 0xC8.
Chuyển số signed 110110102 về decimal.
-128+64+16+8+2 = -38.
Giá trị của số signed và unsigned là khác biệt bởi vì MSB, dựa vào quý hiếm này thì máy vi tính quan yếu nói mang lại chúng ta hiểu rằng sẽ là số signed giỏi unsigned, cho nên vì vậy thì người lập trình phải ghi nhận được điều này bằng cách track sử dụng đổi mới tài liệu 32-bit hình dạng long
Words với Halfwords
Một halfword hoặc double byte gồm 16 bits, với từng bit b15,…,b0 là số nhị phân có mức giá trị là 0 hoặc 1.

Nếu halfword được dùng để thể hiện số unsigned thì quý hiếm của nó là
N = 32768•b15 + 16384•b14 + 8192•b13 + 4096•b12+ 2048•b11 + 1024•b10 + 512•b9 + 256•b8+ 128•b7 + 64•b6 + 32•b5 + 16•b4 + 8•b3 + 4•b2 + 2•b1 + b0
Có 65536 giá trị khác nhau của số 16-bit unsigned. Giá trị nhỏ tuổi duy nhất là 0 và lớn nhất là 65535.
Các nguyên tố cơ bản của số 16-bit unsigned là 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
Ví dụ: Giá trị của 00100001100001002 hoặc 0x2184 là 8192+256+128+4 hoặc 8580.

Nếu halfword được dùng làm bộc lộ số signed thì quý giá của nó là
N = -32768•b15 + 16384•b14 + 8192•b13 + 4096•b12+ 2048•b11 + 1024•b10 + 512•b9 + 256•b8+ 128•b7 + 64•b6 + 32•b5 + 16•b4 + 8•b3 + 4•b2 + 2•b1 + b0
Có 65536 quý hiếm không giống nhau của số 16-bit unsigned. Giá trị nhỏ tuyệt nhất là –32768 và lớn nhất là 32767.
Các thành phần cơ bạn dạng của số 16-bit unsigned là 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, -32768
Ví dụ: Giá trị của 11010000000001002 hoặc 0xD004 là –32768+16384+4096+4 hoặc –12284.

Lỗi hay gặp khi bạn thực hiện những phép toán 16-bit trên những số 8-bit hoặc thực hiện các phnghiền toán 8-bit bên trên những số 16-bit
Một word trong ARM Cortex-M đang tất cả 32 bits. Giống nhỏng số unsigned cùng với 32 bit thì mỗi bit b31,…,b0 vẫn là số nhị phân với có giá trị 1 hoặc 0.
Nếu số 32-bit được dùng làm bộc lộ số unsigned integer, thì quý hiếm của số này là:
N = 231 • b31 + 230 • b30 + … + 2•b1 + b0 = sum(2i • bi) for i=0 to 31
Có 232 số unsigned 32-bit khác biệt. Số nhỏ tuổi tuyệt nhất là 0 và lớn nhất là 232-1. Ngưỡng của chính nó đã ở trong vòng trường đoản cú 0 tới 4 tỷ. Các yếu tố cơ phiên bản là 1, 2, 4, … , 229, 230, 231
Nếu số 32-bit được dùng để làm thể hiện số singed thì cực hiếm của nó là
N = -231 • b31 + 230 • b30 + … + 2•b1 + b0 = -231 • b31 + sum(2i • bi) for i=0 lớn 30
cùng các thành phần cơ bạn dạng 1, 2, 4, … , 229, 230, -231
khi xây dựng C thì phong cách tài liệu ta thường được sử dụng là char short cùng long nhằm xác định những số 8-bit,16-bit hoặc 32-bit, tuy vậy với phần đông complier của ARM thì int là 32 bit.
Tạm Kết
Vậy là xong xuôi được một số trong những định nghĩa cùng những ví dụ minch họa về hệ số và những cách thay đổi thân các số nhị phân, thập phân, thập lục phân, các tư tưởng về precision cùng byte, 2’s Complement cùng với signed và unsigned, word cùng halfword