30/09/2018, 23:44

Độ rộng của dữ liệu thành viên trong class c++

mình có đoạn ct sau

#include <iostream>
using namespace std;

typedef int bit;

class packet{
private:
	bit type :1;      // độ rộng của thành viên type
	bit acknowledge :1;
	bit channel :1;
	bit sequenceNo :1;
	bit moreData :1;
};

độ rộng thành viên là sao nhỉ?

abcxyz viết 01:47 ngày 01/10/2018

help me, up

*grab popcorn* viết 01:59 ngày 01/10/2018

Nó giới hạn số bit sử dụng của biến đó
Như ở trên thì mỗi biến chỉ dùng 1 bit thôi

http://rextester.com/AAVQ80989

abcxyz viết 01:55 ngày 01/10/2018

thế giờ mình dùng nó cho các kiểu khác, char, int , float, array, string thì được k bạn?

*grab popcorn* viết 01:55 ngày 01/10/2018

Mình nhớ là chỉ áp dụng được cho kiểu số nguyên thôi.
Chứ như String, float thì không.

Và người ta gọi cái này là bit field đó bạn
http://en.cppreference.com/w/cpp/language/bit_field

abcxyz viết 01:56 ngày 01/10/2018

bạn ơi
khi số bít được sử dụng
nếu thiếu bit để biểu diễn số đó ví dụ

2 = 10
nếu độ rộng của trường là >2 bit thì số đó có thể biểu diễn
nhưng trường hợp thiếu bít
5 = 101
nếu độ rộng của trường = 3
thì khi xuất ra nó xuất 1
thì 1 đây là bít đầu tiên hay cuối cùng trong 101
tức là nếu thiếu bit sử dụng để biểu diễn số được gán, thì số hiển thị ra màn hình ( 0 hoặc 1) thì nó lấy bit nào hiển thị ra ,đầu hay cuối hay giữa hay là theo quy tắc nào?

*grab popcorn* viết 01:50 ngày 01/10/2018

Cái này mình ko rõ lắm.
Nhưng mình thấy nó thường lấy bit từ phải sang trái và bỏ đi những bit thừa kia.
Vd: 1110100
Nếu như biến đó chỉ dùng 4 bit
thì nó lấy 0100. = 4

Bài liên quan
0