2.55 - 2.75

Language: Other Language

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;
}