Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //gcc 5.4.0
- #include <stdio.h>
- #include <math.h>
- #define MAX 16
- int main(void)
- {
- long int cantNum, num, auxnum, i=0,j=0,k=0,flag=0;
- int bits[MAX]={};
- do{
- scanf("%ld",&cantNum);
- }while((cantNum < 1) || (cantNum > 100));
- for(i=0; i < cantNum; i++){
- flag = 0;
- do{
- scanf("%ld",&num);
- }while((num < -32768) || (num > 32767));
- for(j=0; j < MAX; j++){
- bits[j]=0;
- }
- auxnum = num;
- k= (MAX - 1);
- while(num != 0){
- bits[k] = num % 2;
- k--;
- num = num / 2;
- }
- for(j=0; j < MAX; j++){
- //printf("%d",bits[j]);
- if(bits[j] < 0){
- bits[j] = (-1 * bits[j]);
- flag = 1;
- }
- }
- if(flag == 0){
- printf("%ld en C2 = ",auxnum);
- for(j=0; j < MAX; j++){
- printf("%d",bits[j]);
- }
- }else{
- //Obtener el Complemento 1
- for(j=0; j < MAX; j++){
- flag = 0;
- if((bits[j] == 0)&&(flag==0)){
- bits[j] = 1;
- flag = 1;
- }
- if((bits[j] == 1)&&(flag==0)){
- bits[j] = 0;
- flag = 0;
- }
- }
- flag = 0;
- //Obtener el Complemento 2
- printf("%ld en C2 = ",auxnum);
- for(j=MAX-1; j >= 0; j--){
- if(j == (MAX-1)){
- if(bits[j] == 1){
- bits[j] = 0;
- flag = 1;
- }
- if((bits[j] == 0)&&(flag == 0)){
- bits[j] = 1;
- flag = 0 ;
- }
- }
- if(j < (MAX - 1)){
- if((bits[j] == 0)&&(flag == 1)){
- bits[j] = 1;
- flag = 0;
- }
- if((bits[j] == 1)&&(flag == 1)){
- bits[j] = 0;
- flag = 1;
- }
- }
- }
- for(j=0; j < MAX; j++){
- printf("%d",bits[j]);
- }
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement