Giải đáp thắc mắc về BIT

Mọi người cho mình hỏi tại sao trong code của mình:

#include<iostream>

using namespace std;

int main() {
	int a = 1;
	cin >> a;
    cout << ~a;
	return 0;
}

image

Mình cho a là int và bằng 1 đáng lẽ ra nó phải có 32 BIT mà vậy tại sao khi mình đảo BIT nó lại thành -2 tức là chỉ có 8 BIT. mong mọi người giúp đỡ.

Sao bạn lại nghĩ là -2 có 8 bits?

2 Likes

mình đảo bits r tính mà. nếu thay a = 4294967294 thì khi đảo bit nó ra 1

Chính xác nó là 0xFFFFFFFE,
kiểu dữ liệu unsigned int là: 4294967294
kiểu dữ liệu signed int là: -2.
Bộ nhớ luu như thế, còn bạn chỉ định kiểu dữ liệu nào, nó sẽ hiển thị tương ứng kiểu dữ liệu đó thôi,

4 Likes

Bạn có thể mô tả vì sao bạn tính ra -2 có 8 bits không?

Ví dụ:

  • nếu số có dấu 8 bits là 0xFE thì bạn tính ra -2?
  • nếu số có dấu 16 bits là 0xFFFE thì bạn tính ra bao nhiêu?
  • nếu số có dấu 32 bits là 0xFFFFFFFE thì bạn tính ra bao nhiêu?
6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?