Darmowe Forum
Kwiecień 11, 2025, 06:13:35
Witamy,
Gość
.
Zaloguj się
lub
zarejestruj
.
Czy dotarł do Ciebie
email aktywacyjny?
1 Godzina
1 Dzień
1 Tydzień
1 Miesiąc
Zawsze
Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności
: Forum zostaÂło uruchomione!
Strona główna
Pomoc
Zaloguj się
Rejestracja
Darmowe Forum
>
C++
>
Podstawy C++ cz. I
>
Liczby ujemne w zapisie dwĂłjkowym
Strony: [
1
]
« poprzedni
następny »
Drukuj
Autor
Wątek: Liczby ujemne w zapisie dwĂłjkowym (Przeczytany 9971 razy)
admin
Administrator
Ekspert
Wiadomości: 821
Liczby ujemne w zapisie dwĂłjkowym
«
:
Listopad 30, 2011, 12:08:18 »
Metoda uzupeÂłnieĂą do 1 - kod U1
Zapis w kodzie U1 liczb ujemnych uzyskuje siĂŞ negujÂąc kaÂżdy bit reprezentacji binarnej moduÂłu liczby zapisanej w kodzie ZM i dodajÂąc bit znaku BZ=1
np. -1110=1 10112ZM=1 01002U1 (teÂż problem z wykonywaniem dziaÂłaĂą, konieczna korekcja)
Metoda uzupeÂłnieĂą do 2 (U2)
Bit MSB oznacza znak liczby:
1 - znak ujemny
0 - znak dodatni
Liczby nieujemne bit znaku + liczba w kodzie binarnym (NKB)
Liczby ujemne
wyznacza siĂŞ moduÂł liczby ujemnej i zapisuje siĂŞ go w systemie znak - moduÂł np |(-4)|10= (0100)2zm
w otrzymanym sÂłowie zamienia siĂŞ 1 na 0, a 0 na 1 1011
do otrzymanego sÂłowa dodaje siĂŞ 1 na najmniej znaczÂącej pozycji sÂłowa. (1100)U2
PrzykÂład 1. Jak przedstawiĂŚ liczbĂŞ -4 w zapisie dwĂłjkowym:
JeÂżeli 4 to 00000100,
zamieniamy zera z jedynkami, czyli mamy 11111011
Dodajemy 1, czyli mamy 11111100. I to jest wÂłaÂśnie (-4).
Zapisane
admin
Administrator
Ekspert
Wiadomości: 821
Odp: Liczby ujemne w zapisie dwĂłjkowym
«
Odpowiedz #1 :
Grudzień 07, 2011, 11:14:36 »
Zadanie 2. Program obliczaj¹cy bitow¹ ró¿nicê, przesuniecie w lewo, przesuniêcie w prawo, negacja, bitowa alternatywa i koniunkcja.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{int a,b;
cout << "Podaj liczbe od 0-15 dla a \n";
cin >> a;
cout << "wprowadz od 0-15 dla b \n";
cin >> b;
cout << "bitowa roznica symetryczna: " << (a^b) << endl;
cout << "bitowe przesuniecie w lewo: " << (a<<b)<< endl;
cout << "bitowe przesuniecie w prawo: " << (a>>b)<< endl;
cout << "negacja bitowa a " << ~(a) << endl;
cout << "bitowa alternatywa: " << (a|b) << endl;
cout << "bitowa koniunkcja: " << (a&b) << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
«
Ostatnia zmiana: Grudzień 07, 2011, 11:24:14 wysłane przez admin
»
Zapisane
admin
Administrator
Ekspert
Wiadomości: 821
Odp: Liczby ujemne w zapisie dwĂłjkowym
«
Odpowiedz #2 :
Grudzień 07, 2011, 11:14:47 »
PrzesuniĂŞcie w lewo
- polega na dopisaniu do prawej strony liczby bitowej zera, po dopisaniu lewy najstarszy bit znika, tak aby zachowaÌ sta³¹ liczbê bitów.
a<<b
Przesuniecie w prawo
- polega na dopisaniu zera do lewej strony liczby bitowej, po dopisaniu z lewej strony zera znika najmÂłodszy bit ( skrajny prawy). Lub przesuniecie o okreÂślonÂą liczbĂŞ bitĂłw np.
a>>b gdzie a liczba ktĂłra bĂŞdzie przesuwana, b - o tyle bitĂłw przesuwamy liczbĂŞ.
np. 1111>>0001 wyÂświetli wynik 0111,
Bitowa ró¿nica symetryczna
- wykrywa ró¿nicê pomiêdzy bitami dwóch liczb, je¿eli bity umieszczone na tych samych pozycjach ró¿ni¹ siê to wpisywana jest wartoœÌ 1 je¿eli bity nie ró¿ni¹ siê to wpisywane jest 0.
np. 101
^111
= 010
Negacja
- polega na zamianie bitĂłw o wartoÂści 1 na 0 i bitĂłw 0 na 1. Np.
~010 = 101
Wynik dziaÂłania jest zaskoczeniem nawet dla Adama, bo wynosi -3, dlaczego tak jest?
Jest to spowodowane tym, ¿e aktualnie wiêkszoœÌ komputerów korzysta z systemu reprezentacji liczb ca³kowitych U2. Ka¿da liczba posiada jeden dodatkowy bit znajduj¹cy siê na pocz¹tku i okreœlaj¹cy czy liczba jest dodatnia (0) czy ujemna (1). Tak wiêc w rzeczywistoœci dla komputera 101 to nie jest 5, a -3. Myœl¹c na skróty, mo¿na napisaÌ pewnik pozwalaj¹cy na szybkie wyliczenie negacji, czyli
~a == (-a-1). Inaczej mĂłwiÂąc jeÂżeli a=2 to ~a=(-2-1)=-3.
«
Ostatnia zmiana: Grudzień 07, 2011, 11:23:58 wysłane przez admin
»
Zapisane
Strony: [
1
]
Drukuj
« poprzedni
następny »
Skocz do:
Wybierz cel:
-----------------------------
Zadanie C++ lutego -Agnieszka
-----------------------------
=> Nowy dziaÂł
=> Zadanie
-----------------------------
E14
-----------------------------
=> DIV
=> Java Script
=> php
-----------------------------
Dla Magdy i Wojtka
-----------------------------
=> Liczby dwĂłjkowe
-----------------------------
PrzykÂłady stron internetowych
-----------------------------
=> Strona zbudowana z tabelek
-----------------------------
Podstawy PHP
-----------------------------
=> PrzesyÂłanie danych z formularza php
=> PĂŞtle w php
-----------------------------
Java Script
-----------------------------
=> Java Script
-----------------------------
C++ Nowe rozdanie
-----------------------------
=> C++
-----------------------------
Java JDK
-----------------------------
=> Java ale nie Script
-----------------------------
Hyde Park
-----------------------------
=> Informacje
-----------------------------
C+++
-----------------------------
=> A Kuba powiedziaÂł
-----------------------------
Multimedia
-----------------------------
=> Photoshop
=> Nowy dziaÂł
=> Java Script
=> Corel
-----------------------------
Html-strony internetowe
-----------------------------
=> Podstawy HTML- ramki/ frames
=> Podstawy HTML- tabelki
-----------------------------
C++
-----------------------------
=> Podstawy C++ cz. I
=> Kompilatory C++
=> Programowanie obiektowe w C++
=> Problem w C++
=> Podstawy
=> C++ po raz pierwszy
-----------------------------
Turbo Pascal
-----------------------------
=> Turbo Pascal semestr II
=> Projekt AÂŚKA
=> Turbo Pascal semestr I
=> Podstawy Turbo Pascal
Ładowanie...
Polityka cookies
Darmowe Fora
|
Darmowe Forum
spw
blackmoon
proskills
zlotasiodemka
moikrewni