C quiz void printbinary(int v) { unsigned int mask=1<<((sizeof(int)<<3)-1); while(mask) { printf("%d", (v&mask ? 1 : 0)); mask >>= 1; } printf("\n"); } int a = 0; // how to set set the 5th bit to 1? printbinary(a); --- C quiz: int x = 0; char* c_ptr= (void*)&x; c_ptr[3] = 1; printf("0x%x\n", x); --- little-endian int main() { unsigned int x = 0xdeadbeef; char *byte = (char *)&x; for (int i=0;i<4; i++) { printf("[%d-bit]: %x\n", i, (unsigned int)byte[i]); } return 0; } --- little-endian casting long long val64 = 0x123456789abcdef; int *ptr32 = (int*) &val64; printf("what do you expect? 0x%x\n", *ptr32); --- C pointers int g = 3; int main() { int l = 5; // local variables don't have a default value int *p, *q; // take address of variable p = &g; q = &l; printf("p %p q %p\n", p, q); // pointer of an pointer int **pp; pp = &p; // take address of a pointer variable printf("pp %p %p %d\n", pp, *pp, **pp); int (*f)(int, char **); f = &main; // take address of a function printf("main: %p\n", f); return 0; } --- uninit local var void bar() { int l; // local variables don't have a default value printf("uninitialized local variable: %x\n", l); } void foo() { int xyz = 0xdeadbeef; printf("quit foo w/ local var = %x\n", xyz); } --- pointer arithmetic int main() { char *c = (char *)0x08200000; int *i = (int *) 0x08200000; printf("%p %p\n", (c+1), (i+1)); return 0; } --- C arrays int a[3] = {1, 2, 3}; // an array of 3 int's char b[3] = {'a', 'b', 'c'}; // an array of 3 char's int main() { // first element is at index 0 printf("%d\n", a[0]); a[1] += 1; // use index access *(a+2) = 5; // pointer access printf("%d %d\n", a[1], a[2]); // pointers to array elements printf("a %p a1 %p a2 %p a2 %p\n", a, a+1, a+2, &a[2]); // pointer arithmetic uses type printf("%p %p\n", b, b+1); return 0; } --- OS using Go: https://pdos.csail.mit.edu/papers/biscuit:login19.pdf --- Using TensorFlow for Deep Learning on Video Data: https://blog.tensorflow.org/2023/01/using-tensorflow-for-deep-learning-on-video-data.html