Code Chuyển số thập phân sang nhị phân

Đây là đoạn code mà em học được trong giáo trình đang học bên hàn.
nó dùng mask để in ra và dùng 32 bit làm tiêu chuẩn.( hạn chế là quá 32 bit là bay màu) mn cần tham khảo hay thắc mắc gì thì bình luận nhé. em vừa học hỏi vừa chia sẻ kiến thức ạ nếu sai nội quy thì gắn cờ em sẽ xoá bài ngay ạ.

#include <stdio.h>

void print_bit(int a){
    int i;
    int n = sizeof(int) * 8; // tạo 1 dãy 32 số
    int mask = 1<< (n -1); // tạo 1 mặt nạ (1x0ffffffff) nghĩa là dịch chuyển số 1 sang trái 31 đơn vị nhé

    for (i = 1; i <=n; ++i){
        putchar(((a & mask) == 0) ? '0' : '1'); // so sánh bin của a và mák. dùng toán tử
        a <<= 1;
        if (i % 4 == 0 && i < n) // cứ 4 số là cách 1 cái cho dễ nhìn, có thể dùng 8 cho đỡ chối mắt
            putchar(' ');
    }
}
void main(){
    int n;
    printf("n = \n");
    scanf("%d", &n);
    print_bit(n);
    printf("\n");
}
n =
9999999999999
0100 1110 0111 0010 1001 1111 1111 1111
Program ended with exit code: 1
1 Like

Mình đính chính hộ bạn rồi nhé :grin:

có tài liệu về bitmask bên đó ko cho mình xin với !

không bác ơi. nói dạy qua loa thôi còn lại mình tự mày mò à…

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?