>>256
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int bin_sum(const char*bin1,const char*bin2, int sign);

int main(int argc, char* argv[]) 
{
    const char*bin1 = "0101";
    const char*bin2 = "1010";
    int result;
    result = bin_sum(bin1, bin2, 0);
    printf("5(0101)+10(1010)=%d\n", result);
    result = bin_sum(bin1, bin2, 1);
    printf("5(0101)+(-6)(1010)=%d\n", result);
    return 0;
}
int bin_sum(const char*bin1,const char*bin2, int sign){
    return strtol(bin1,NULL,2)+strtol(bin2,NULL,2)+(-(sign&*bin2)<<strlen(bin2));
}