0

I have a project to do assembler and simulator in c++ with virtual memory (of characters) 128KB

I just wondering how could I convert char to it's corresponding bits?

how can I reset the bits of char type?

MASM
  • 11
  • 3

1 Answers1

0

You'll want to know the endian-ness of your target system. C and C++ define the width of a char differently; you'll want to make sure you are stepping through the correct amount of offsets. Then it's just a simple matter of testing each bit offset against a bitmask. This is some code from an old Code Review question of mine; modified to :

#include <stdio.h>

char set_bit(const char x, const char offset, const int value) {
    return value ? x | (1 << offset) : x & ~(1 << offset);
}

char get_bit(const char x, const char offset) {
    return (x & (1 << offset)) != 0;
}
int main(void) {
    int max = sizeof(char) * 8 - 1;
    char x = 0;
    int count;
    for (count = 0; count < max; count += 2)
        x = set_bit(x, count, 1);
    for (count = max; count >= 0; count--)
        printf("%d ", (int) get_bit(x, count));
    printf("\n");
    return 0;
}

Output:

$ g++ main.cpp -o main && ./main
0 1 0 1 0 1 0 1
motoku
  • 1,571
  • 1
  • 21
  • 49