Universidade Católica do Salvador

Curso de Bacharelado em Informática

Linguagem de Programação para Aplicações Científicas

Professor: Eduardo Argollo

Rotação de Bits

Questão 1:                  Construa uma função que receba um número inteiro e retorne o oposto deste número usando o método do complemento de dois.

Questão 2:                  Crie uma função que receba um número e uma posição e retorne o valor do bit posição de número.

Questão 3:                  Construa um programa que obtenha um número inteiro do teclado e mostre este número em binário.

Questão 4:                   Transforme o programa da questão anterior em uma função que receba um inteiro e ‘retorne’ uma string com a forma binária deste número. Crie um programa principal que leia um número do teclado e o mostre em formato binário.

Questão 5:                  Crie uma função que converta um número em uma string no formato octal. Crie um programa principal para testar a função.

Questão 6:                  Considere que em um inteiro longo estão armazenados os status de 32 lâmpadas de uma fábrica. Cada lâmpada é representada por um bit que, quando estiver com valor 1, indica que esta está acesa. Você foi contratado para criar funções que:

a)       Acenda uma lâmpada específica

b)       Apague uma lâmpada específica

c)       Acenda um conjunto de 8 lâmpadas a partir de uma posição específica

d)       Conte quantas lâmpadas estão acesas.

 

Questão 7:                  &Desejando armazenar uma hora qualquer, uma equipe de desenvolvimento optou por usar um tipo inteiro (16 bits) separando os campos na forma:

5bits

6bits

5bits

---Horas----

---Minutos---

--Segudos--

                Gráfico 1: Arrumação da hora em um inteiro

Horas são armazenadas nos 5 bits de mais alta ordem, podendo conter valores compreendidos entre 0 e 23. Os demais valores (24..31) deverão ser desconsiderados.

Minutos são armazenados nos 6 bits seguintes aos do campo hora (vide gráfico 1) podendo conter os valores compreendidos entre 0 e 59. Os demais valores (60..63) deverão ser desconsiderados.

Segundos são armazenados nos 5 bits de mais baixa ordem que armazena os valores compreendidos entre 0 e 29. O valor armazenado corresponde à metade dos segundos da hora correspondente, isto é, o valor armazenado 25 corresponde a 50 segundos. Os demais valores (30..31) deverão ser desconsiderados.

 

Você foi contratado por essa empresa para construir uma função C que receba como parâmetros três inteiros correspondendo à hora, minuto, segundo e que utilizando rotação de bits retorne um inteiro no formato especificado.

Assuma como protótipo da função especificada:

int converter_hora(int hora,int minuto, int segundo)

 

Exemplos:

10:15:30 (10 horas, 15 minutos e 30 segundos):

5bits

6bits

5bits

---Horas----

---Minutos---

--Segudos--

00110

001111

01111

10

15

15

 

   23:59:59,

5bits

6bits

5bits

---Horas----

---Minutos---

--Segudos--

10111

111011

11101

23

59

29

 

Questão 8:                  Além da função de conversão de horas, complete sua ‘biblioteca’ de tratamento de horas com as funções:

ObterHoras, ObterMinutos, ObterSegundos, SomarHoras e SubtrairHoras.

1