2.55, 2.56 2.57 pass
2.58
typedef unsigned char* byte_pointer;
int is_little_endian(){
int num = 0xff;
byte_pointer start = (byte_pointer) &test_num;
if(*start == 0xff){
return 1;
}
else{
return 0;
}
}
2.59
#include <stdio.h>
int func(int x, int y){
int x1 = x & 0xFFFFFF00;
int y1 = y & 0xFF;
return x1 | y1;
}
int main(){
int x = 0x89ABCDEF;
int y = 0x76543210;
int z = func(x, y);
printf("%x\n",z);
return 0;
}
2.60
#include <stdio.h>
unsigned replace_type(unsigned x, int i, unsigned char b){
unsigned mask = (0xFF << (i * 8 ));
mask = ~mask;
// printf("%x\n", mask);
unsigned value = (unsigned)b << (i*8);
unsigned y = x & mask;
y = y | value;
return y;
}
int main(){
unsigned y1 = replace_type(0x12345678, 2, 0xAB);
// 0x12AB5678
printf("%x", y1);
}
2.61
#include <stdio.h>
int main(){
int x = 0xFFFFFFFF;
int y = 0;
int z = 0xFF;
int a = 0x00ffffff;
int r1 = !(~x);
int r2 = !y;
int r3 = !(~(z | ~0xFF));
int r4 = !((a >> (sizeof(int)-1)*8 ) & 0xFF);
printf("%x %x %x %x\n", r1, r2, r3, r4);
return 0;
}
2.62
#include <stdio.h>
int int_shifts_are_arithmetic() {
int x = -1;
return (x >> 1) == x;
}
int main() {
printf("%d\n", int_shifts_are_arithmetic());
return 0;
}