Curso
de Bacharelado em Informática
Linguagem
de Programação para Aplicações Científicas
Professor:
Eduardo Argollo
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.