01/10/2018, 12:20

Giải thích kết quả khi in ra màn hình các số trong hệ nhị phân

Chào dạy nhau học
Mình đang không hiểu vì sao lại in ra được những con số như thế này khi đầu vào là những số nằm trong hệ nhị phân (binary) trong bảng mã ASCII. Bạn nào có thể giải thích giúp mình với, mình cảm ơn.


Mình thử in ra những số trong hệ binary - và đây là kết quả.

Tao Không Ngu. viết 14:28 ngày 01/10/2018

Hi Chẵn.

  1. Mảng của bạn là mảng int nên khi bạn cout nó ra thì nó hiện các số ra chứ không liên quan gì đến các bảng ACII của bạn.
  2. Các số bắt đầu bằng 0.
Chẵn viết 14:29 ngày 01/10/2018

Bạn cho mình hỏi vì sao lại là 0,1,8,9…512,513, mình test trên c++ và java đều như thế?
Còn nữa, mình thử in mảng này với c# thì kết quả lại như này

Tao Không Ngu. viết 14:34 ngày 01/10/2018

Hi Chẵn.

  1. Trong C/C++ và Java các số bắt đầu bằng 0 thì được coi là hệ cơ số 8.
  2. Trong C# thì không.
Chẵn viết 14:32 ngày 01/10/2018

Mình vẫn chưa hiểu cho làm.
Bạn làm ơn giải thích kỹ hơn được không?
Vì sao khi in.
00000010 = 8
00000011 = 9
00001000 = 512
00001001 = 513
01111110 = 299592
01111111 = 299593
Cơ chế in những con số trong hệ nhị phân này ra là như thế nào vậy?

Tao Không Ngu. viết 14:28 ngày 01/10/2018

Hi Chẵn.

  1. Không phải là hệ nhị phận.

01 -> 1(8) = 1
011 -> 11(8) = 8^1 + 1 = 9
00001000 -> 1000(8) = 8 ^ 3 = 512

Chẵn viết 14:24 ngày 01/10/2018

Cho mình hỏi thêm là khi minh thực hiện in các số:
011 = 9
012 = 10
013 = 11
014 = 12
Vì sao vậy?
Bạn có tài liệu hay bài viết nào liên quan để đọc hiểu hơn về vấn đề này, làm ơn recommend cho mình được không nhỉ?

Tao Không Ngu. viết 14:29 ngày 01/10/2018

Hi Chẵn.
Có thể do bạn không để ý thôi.

www.vietjack.com

Hằng số trong C

Hằng số trong C - Học C cơ bản và nâng cao theo các bước đơn giản và ví dụ dễ hiểu bắt đầu từ cơ bản về C, literals, kiểu dữ liệu, hàm, vòng lặp, mảng, con trỏ, cấu trúc, input và output, quản lý bộ nhớ, bộ tiền xử lý, điều khiển luồng etc.

Prefixes: TIền tố.
Suffixes: Hậu tố.

GeeksforGeeks – 19 Jun 17

Integer literal in C/C++ (Prefixes and Suffixes) - GeeksforGeeks

Integer literal is a type of literal for an integer whose value is directly represented in source code. For example, in the assignment statement x… Read More »

Chẵn viết 14:24 ngày 01/10/2018

Mịnh đang làm vài bài test về java có 1 câu là in 1 số nguyên > int a = 012; thì ra bao nhiêu mình làm thì ra 10 và tự dưng k hiểu vì sao lại in ra đươc như thế? và thế là tra đầu đuôi 1 lúc thì nó ra cái bảng mã ascii và mình lại in thử và số trong các cột của bảng mã này thì nó ra những con số rất khác nên mới tò mò tìm hiều mà vẫn chưa ra nên mới đăng bài hỏi.

Uchiha Sasuke viết 14:31 ngày 01/10/2018

Trong C/C++ và Java các số bắt đầu bằng 0 thì được coi là hệ cơ số 8.

anh có biết tại sao nó lại quy ước là cơ số 8 mà không phải 2, 10 hay 16 không ? ths

viết 14:35 ngày 01/10/2018

0x… là hệ 16
0… là hệ 8
0b… là hệ 2 (C/C++ ko có)
viết số bình thường là hệ 10

do mấy con số kia bạn để số 0 ở đầu nên nó tự hiểu là số hệ 8 chứ ko phải hệ 2. Muốn viết số hệ 2 trong C/C++ thì phải viết thông qua hệ 16, vd 0b10011011 thì phải viết thành hệ 16 là 0x9b.

chắc mấy ông lập trình viên thấy viết 0o… xấu quá nên viết 0… được rồi

Uchiha Sasuke viết 14:30 ngày 01/10/2018

0x… là hệ 16
0… là hệ 8
0b… là hệ 2 (C/C++ ko có)

cái thứ 3 test ko được ?

viết 14:23 ngày 01/10/2018

đã bảo là ko có rồi ~.~

Uchiha Sasuke viết 14:36 ngày 01/10/2018

chỉ bảo C/C++ ko có, test java mà

viết 14:24 ngày 01/10/2018

Java mình ít xài nên ko biết, thử ko có thì nó cũng ko có.

Bài liên quan
0