TD12 - Représentation binaire des entiers relatifs. MPSI - Lycée Thiers

Documents pareils
Représentation d un entier en base b

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Licence Sciences et Technologies Examen janvier 2010

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)


DM 1 : Montre Autoquartz ETA

V- Manipulations de nombres en binaire

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Programmation C++ (débutant)/instructions for, while et do...while

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et Programmation, IMA

Initiation à la programmation en Python

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Les structures de données. Rajae El Ouazzani

INF 321 : mémento de la syntaxe de Java

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Solutions du chapitre 4

1 Recherche en table par balayage

Les arbres binaires de recherche

STAGE IREM 0- Premiers pas en Python

Représentation des Nombres

TP 1. Prise en main du langage Python

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

IFT2880 Organisation des ordinateurs et systèmes

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours de Systèmes d Exploitation

Plan du cours. Historique du langage Nouveautés de Java 7

La mémoire. Un ordinateur. L'octet. Le bit

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Programmation Classique en langage C

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours d algorithmique pour la classe de 2nde

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Programmation en langage C

TD3: tableaux avancées, première classe et chaînes

Introduction au langage C

Conversion d un entier. Méthode par soustraction

Recherche dans un tableau

Les opérations binaires

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

ASR1 TD7 : Un microprocesseur RISC 16 bits

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Rappels Entrées -Sorties

Cours Informatique Master STEP

Cours Informatique 1. Monsieur SADOUNI Salheddine

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Claude Delannoy. 3 e édition C++

Programmation C. Apprendre à développer des programmes simples dans le langage C

Bases de programmation. Cours 5. Structurer les données

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

IFT1215 Introduction aux systèmes informatiques

IV- Comment fonctionne un ordinateur?

Programme Compte bancaire (code)

1 Lecture de fichiers

Chapitre 10 Arithmétique réelle

Programmation en Java IUT GEII (MC-II1) 1

Introduction à MATLAB R

Système binaire. Algèbre booléenne

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Microprocesseur + Logiciel

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Java Licence Professionnelle CISII,

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Initiation à l algorithmique

Codage d information. Codage d information : -Définition-

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

CM2 L architecture MIPS32

Algorithme. Table des matières

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

Cours d Informatique

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Le prototype de la fonction main()

Le langage C. Introduction, guide de reference

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Architecture des ordinateurs

Algorithmes récursifs

PROGRAMMER EN MQL4. Apprenez à automatiser vos stratégies sur MetaTrader 4

Corrigé des TD 1 à 5

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Présentation du langage et premières fonctions

Introduction à l algorithmique et à la programmation M1102 CM n 3

Transcription:

TD12 - Représentation binaire des entiers relatifs

Vérification de la représentation binaire des entiers relatifs. / 1-2 3-4

/ Exercice 1 Exercice 1. Vérification de la représentation binaire des entiers relatifs. On rappelle qu avec des opérandes de type entier les opérateurs logiques bit à bit s obtiennent par : Opérateur action & ET logique bit à bit OU logique bit à bit ^ XOR (OU exclusif) logique bit à bit ~ NON logique bit à bit On dispose aussi des 2 opérateurs binaires : Opérateur action << Décalage à gauche : a<<b renvoie l entier obtenu en décalant à gauche de b bits l écriture binaire de a. >> Décalage à droite : a>>b renvoie l entier obtenu en décalant à droite de b bits l écriture binaire de a.

/ Exercice 1 1. Que renvoie 1<<1? 1<<2? 1<<3? Pour i un entier positif que renvoie 1<<i? Réponses : 2, 4, 8, 2 i. 2. Pour n un entier et i un entier positif, quelles valeurs peut renvoyer n&(1<<i)? Réponses : 0 ou 2 i selon que le bit de poids i dans la représentation binaire de n soit 0 ou 1. 3. Pour n un entier et i un entier positif, quelles valeurs peut renvoyer (n & (1<<i)) >> i? Que représente cette valeur pour la représentation binaire de n? Réponses : 0 ou 1 selon que le bit de poids i dans la représentation binaire de n soit 0 ou 1. C est la valeur du bit de poids i dans la représentation binaire de n.

/ 4. Ecrire le script de la fonction suivante : def representation(n,b=64): rep = "" for k in range(b): bit = (n & 1<<k) >> k rep = str(bit) + rep return rep Tester son fonctionnement pour n variant de 0 à 10 (au sein d une boucle for). De même tester son fonctionnement n variant de -10 à -1. Tester son fonctionnement pour n valant 2 63, et pour n valant 2 64. 5. Que renvoie pour un entier relatif n l appel de representation(n)?

/ 4) a = 0 ; b = 10 for n in range(a,b+1): print(representation(n)) Ce qui produit : 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000001 0000000000000000000000000000000000000000000000000000000000000010 0000000000000000000000000000000000000000000000000000000000000011 0000000000000000000000000000000000000000000000000000000000000100 0000000000000000000000000000000000000000000000000000000000000101 0000000000000000000000000000000000000000000000000000000000000110 0000000000000000000000000000000000000000000000000000000000000111 0000000000000000000000000000000000000000000000000000000000001000 0000000000000000000000000000000000000000000000000000000000001001 0000000000000000000000000000000000000000000000000000000000001010

/ 4) En changeant a et b en -10 et -1 : a = 0 ; b = 10 for n in range(a,b+1): print(representation(n)) 1111111111111111111111111111111111111111111111111111111111110110 1111111111111111111111111111111111111111111111111111111111110111 1111111111111111111111111111111111111111111111111111111111111000 1111111111111111111111111111111111111111111111111111111111111001 1111111111111111111111111111111111111111111111111111111111111010 1111111111111111111111111111111111111111111111111111111111111011 1111111111111111111111111111111111111111111111111111111111111100 1111111111111111111111111111111111111111111111111111111111111101 1111111111111111111111111111111111111111111111111111111111111110 1111111111111111111111111111111111111111111111111111111111111111 >>> representation(-2**63) 1000000000000000000000000000000000000000000000000000000000000000 >>> representation(-2**64) 0000000000000000000000000000000000000000000000000000000000000000 representation(n) renvoie la représentation binaire signée sur 64 bits de n utilisée en mémoire.

1-2 3-4 Exercice 2. 1-2 Exercice 2. Conversion décimal/binaire signé 1. Ecrire une fonction binaire qui prend en paramètre un entier positif et renvoie une chaine de caractère représentant son écriture binaire. Par exemple binaire(17) renverra 10001 2. Ecrire une fonction binairesigne(n,n) prenant en paramètre une entier relatif n et un entier strictement positif N. La fonction renverra une chaine de N caractères représentant l écriture binaire signée sur N bits de l entier n. Pour celà : La fonction vérifiera que l entier n peut être représenté sur N bits en binaire signé, Si c est le cas, elle changera n en n modulo 2 N. appellera la fonction binaire avec le paramètre adéquat. Si nécéssaire complétera la chaine renvoyée par autant de zéros que nécessaire pour obtenir une chaine de N caractères.

1-2 3-4 Exercice 1. 1) def binaire(n): if n == 0: return 0 bin = "" while n>0: bin = str(n%2) + bin n = n//2 return bin 2) def binairesigne(n,n): if -2**(N-1) <= n < 2**(N-1): n = n%2**n # ou : if n<0: n += 2**N bins = binaire(n) bins = (N-len(binS)) * 0 + bins return bins

1-2 3-4 Exercice 2. 3-4 3. Ecrire une fonction decimal qui prend en paramètre une chaine de caractère représentant l écriture binaire d un entier positif et renvoie cet entier positif. Par exemple decimal( 10001 ) renverra 17. 4. Ecrire une fonction decimalsigne(bin) prenant en paramètre une chaine de N caractères qui représente l écriture en binaire signée sur N bits d une entier relatif. La fonction renverra l entier représenté. Par exemple decimalsigne( 11111111 ) renverra -1.

1-2 3-4 Exercice 2. 3-4 3) def decimal(bin): n = 0 for x in bin: n *= 2 n += int(x) return n 4) def decimalsigne(bin): N = len(bin) n = decimal(bin) if n<2**(n-1): return n else: return n-2**n