Битски оператори у програмском језику C

У оквиру програмског језика С можемо извршавати операције на нивоу бита користећи бинарне операторе. Познавање бинарних оператора нам помаже око многобројних оптимизација у коду те "елегантнијих решења".

Најбољи пример кроз који можемо осликати предности коришћења бинарних оператора јесте вишеструка if петља где унутар једног if-а можемо поставити бесконачно много услова. Најчешће коришћени бинарни оператори су логички оператори И и ИЛИ, а уз њих ћемо приказати и шифтовање бројева у леву и десну страну.

Оператори

Пре саме приче о операторима напоменућемо да унутар програмског језика С, вредности испитивања логичких променљивих могу бити "ТАЧНО" (у ком случају функција коју испитујемо враћа нулу - 0) или "НЕТАЧНО" (када функција враћа јединицу - 1). Примера ради, ако нешто испитујемо унутар if наредбе, наш услов може бити задовољен, у том случају ће програм вратити 1 те ће се испунити тело саме петље. У супротном, функција враћа 0, те не улази у тело петље већ одлази у тело else дела.[1]

Бинарно И - &

А Б А & Б
0 0 0
1 0 0
0 1 0
1 1 1
Логичка конјункција:

У таблици истинитости изнад видели смо како ће се понашати наша функција када имамо два услова међусобно повезана логичким И.

Пример:
   int i=5;
   int j=4;
   if(i>0 && j>0){
       printf("Сви услови су испуњени.");
   }
   else{
       printf("Бар један од услова није испуњен.");
   }

Јасно, услови које смо навели унутар ИФ петље су испуњени те ћемо на конзоли добити прву поруку. Самим коришћењем бинарних оператора избели смо двоструку ИФ наредбу, себи смо скратили посао и обавили га на доста "елегантнији" начин.

Напомена: као што видите у примеру изнад за везивање услова користили смо двоструки амперсент (логичко И). Идентичан резултат бисмо добили и да смо користили само једно "И". Разлика између два начина је у томе што се када користимо два "И" услови проверавају до оног тренутка док су испуњени, тј уколико би примера ради први услов био нетачан, исход би већ био познат и сама петља не би ни проверавала други услов. Када користимо само једно "И", сви услови из наше петље биће испитани без обзира на то колико их има и да ли је након првог или неког другог од њих исход познат.[2]

Бинарно ИЛИ - |

А Б А или Б
0 0 0
1 0 1
0 1 1
1 1 1
Логичка дисјункција:

Прича је заправо доста слична као и када је у питању бинарно И. Из таблице истинитости пак видимо да ће се тело ИФ петље испунити уколико је бар један од услова испуњен. Јасно, као и у претходном случају и овде можемо користити једну или две усправне црте у самом коду. Уколико користимо једну, сви услови из петље ће бити испитани, у супротном одмах након откривања истинитости првог услова извршиће се наредбе.[3]

Пример:

   int i=5;
   int j=4;
   int z=-3;
   if(i<0 || j<0 || z<0){
       printf("Бар један од услова је испуњен.");
   }
   else{
       printf("Ниједан од услова није испуњен.");
   }

Бинарно искључива дисјункција - ^

А Б А ^ Б
0 0 0
1 0 1
0 1 1
1 1 0

Када је реч о искључивој (ексклузивној) дисјункцији наша петља ће бити извршена ако је један од услова испуњен али не и два. Дакле, тело наше ИФ петље ће бити испуњено уколико је испуњен услов А или услов Б, у супротном се неће извршити.

Пример:

   int j=4;
   int z=-3;
   if(j<0 ^ z<0){
       printf("Услов испуњен.");
   }
   else{
       printf("Услов није испуњен.");
   }

Бинарно НЕ - ~

А
0 1
1 0

Бинарно НЕ или комплемент броја означићемо са тилда (~) и његова улога ће бити да промени предзнак броја.

Пример:

   int j=4;
   int b=~j; // b=-4;

Шифтовање

Шифтовање је још једна корисна операција коју можемо реализовати коришћењем бинарних оператора. Променљиву можемо шифтовати у леву или десну страну, те ће нам програм у зависности од тога вратити број који добијамо шифтовањем записа броја у бинарном облику.

Шифтовање у десну страну - >>

Ако шифтујемо број у десну страну, заправо ћемо га смањити. Цифре у бинарном запису броја ћемо померити за по једно месту удесно и на последње место додати нулу.

Пример:

   int j= 14; // број 14 ће у бинарном запису изгледати овако: 1110;
   int b= j >> 1; // ако га шифтујемо у ДЕСНУ страну добијамо ово: 0111, цифре одлазе за по једно место удесно и додајемо 0;
   printf("%d",b); // број који смо добили у декадном систему има вредност 7, те ће се седмица исписати на конзоли.

Да поновимо, при шифтовању цифре одлазе за по једно место у десну страну, прву цифру гладано са десне стране губимо, на њено место долази прва следећа и то се редом понавља до последње цифре. На место последње цифре долази нула и наш поступак је завршен. Исти случај је и када број шифтујемо улево.

Шифтовање у леву страну - <<

Ако направимо паралелу са шифтовањем удесно, једина суштинска разлика ће бити што овог пута шифтовањем добијамо већи број у односу на почетни. Цифре померамо за по једно место у леву страну а на место прве цифре записујемо нулу.

Пример:

   int j= 14; // ако се вратимо претходном примеру и броју 14 који у бинарном систему има запис: 1110; 
   int b= j << 1; // шифтујемо ли га у леву страну добићемо запис: 11100;
   printf("%d",b); // тако добијени број у декадном систему има вредност 28, те ће тај број бити исписан на конзоли.

Референце

  1. ^ Kernighan; Ritchie, Dennis M. (1988). The C Programming Language (2nd изд.). Englewood Cliffs, NJ: Prentice Hall. ISBN 978-0-13-110362-7. Архивирано из оригинала 06. 11. 2008. г. Приступљено 26. 01. 2017.  Regarded by many to be the authoritative reference on C.
  2. ^ [1] Архивирано на сајту Wayback Machine (2016-04-21) Конјункција
  3. ^ „Дисјункција” (PDF). Архивирано из оригинала (PDF) 21. 04. 2016. г. Приступљено 09. 04. 2016. 

Read other articles:

Schisandraceae Schisandra chinensis Klasifikasi ilmiah Kerajaan: Plantae Divisi: Magnoliophyta Kelas: Magnoliopsida Ordo: Austrobaileyales Famili: SchisandraceaeBlume[1] Genera Schisandra Kadsura Illicium Schisandraceae atau Suku Omija-omijaan nerupakan sebuah famili tumbuhan berbunga yang di dalamnya terdiri dari 3 genus tumbuhan, dengan total 92 spesies tumbuhan yang diketahui. Famili tumbuhan ini telah dikenal oleh sebagian besar ahli taksonomi selama beberapa dekade terakhir. Sebe...

 

Lago de Walen Walensee Vista de satélite del lago (NASA)Ubicación geográficaContinente Europa centralRegión Suiza orientalCuenca Río RinCoordenadas 47°07′00″N 9°12′00″E / 47.116666666667, 9.2Ubicación administrativaPaís Suiza SuizaDivisión  Glaris  San GaloSubdivisión Distritos de Sarganserland y See-GasterPresaTipo Lago de agua dulceCuerpo de aguaOrigen Tectónico y glaciarTiempo retención 1,425 añosIslas interiores Varios islotesAfluentes ...

 

Gottfried Leibniz argumentó que debían introducirse números idealizados que contuvieran infinitesimales La historia del cálculo está repleta de debates filosóficos sobre el significado y la validez lógica de los números denominados fluxiones o infinitesimales. La forma estándar de resolver estos debates es definir las operaciones de cálculo utilizando procedimientos épsilon-delta en lugar de infinitesimales. El análisis no estándar[1]​[2]​[3]​ reformula el cálc...

Título Alternativo Linha Verde Acham interessante trocar o diagrama principal por um destes? Ligaanet (discussão) 02h54min de 13 de dezembro de 2018 (UTC)Responder[responder] Logo a cores (branco sobre vermelho) em vez de logo a branco (transparente sobre branco) — hmm, não sou contra. Mas como a infocaixa à direita já tem esse opção se calhar fica melhor assim. -- Tuválkin ✉ 19h48min de 29 de fevereiro de 2020 (UTC)Responder[responder] Diagrama de Mobilidade Reduzida Centralizaç...

 

Zinia lekuk 'Zinnia angustifolia 'Star White' Klasifikasi ilmiah Kerajaan: Plantae (tanpa takson): Angiospermae (tanpa takson): Eudikotil (tanpa takson): Asteridae Ordo: Asterales Famili: Asteraceae Tribus: Heliantheae Genus: Zinnia Spesies: Z. angustifolia Nama binomial Zinnia angustifoliaKunth 1818 Sinonim[1] Crassina angustifolia Kuntze Crassina linearis (Benth.) Kuntze Zinnia linearis Benth., syn of var. linearis Zinia lekuk atau dikenal dengan nama ilmiah Zinnia angustifolia...

 

Свято-Михайлівська церква Свято-Михайлівська церква у Безуглівці 50°56′ пн. ш. 31°59′ сх. д. / 50.933° пн. ш. 31.983° сх. д. / 50.933; 31.983Координати: 50°56′ пн. ш. 31°59′ сх. д. / 50.933° пн. ш. 31.983° сх. д. / 50.933; 31.983Тип споруди церкв...

Luftaufnahme Hier teilt sich die Elbe Blick aus der anderen Richtung Leuchtfeuer Bunthaus 2015, aufgenommen aus Richtung Nordwest Die Stackmeisterei Bunthaus der Hamburg Port Authority in Hamburg-Moorwerder. An der Bunthäuser Spitze (Elbestromkilometer 609) teilt sich die Elbe für etwa 15 Kilometer in die Norder- und die Süderelbe auf und bildet ein Binnendelta. Die beiden Elbarme umschließen die Elbinseln mit den heutigen Hamburger Stadtteilen Wilhelmsburg, Veddel, Kleiner Grasbrook...

 

Kuarter SoufrièreKuarterLokasi di Saint LuciaNegara Saint LuciaIbu kotaSoufrièreLuas • Total50,5 km2 (195 sq mi)Populasi (2010) • Total8.472 • Kepadatan17/km2 (43/sq mi)Kode ISO 3166-2LC-10 Kuarter Soufrière adalah salah satu kuarter di Saint Lucia. Kode ISO 3166-2 kuarter yang beribu kota di Soufrière ini adalah LC-10. Menurut sensus 2010, jumlah penduduk kuarter ini adalah 8.472 jiwa. Referensi 2010 Population and Housing...

 

2006 television film This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (April 2013) (Learn how and when to remove this template message) 638 Ways to Kill CastroA screenshot of Fidel Castro from the documentary trailerDirected byDollan CannellTheme music composerSamuel SimCountry of originUnited KingdomOriginal languageEnglishProductionProducerKari LiaCinematogra...

News magazine covering the Asia-Pacific For other uses, see Diplomat (disambiguation). The DiplomatTypeOnlineFormatMagazineOwner(s)MHT CorporationPublisherJames PachEditorShannon Tiezzi (Editor-in-Chief) Catherine Putz (Managing Editor) Sebastian Strangio (Southeast Asia Editor) Sudh Ramachandran (South Asia Editor) Ankit Panda (Editor-at-Large)Founded2001Ceased publication2009 (print)HeadquartersTokyo, Japan (former), Washington, D.C., United StatesISSN1446-697XWebsitethediplomat.com The Dip...

 

2008 romantic comedy musical film Mamma Mia!Theatrical release posterDirected byPhyllida LloydScreenplay byCatherine JohnsonBased onMamma Mia!by Catherine JohnsonProduced byJudy CraymerGary GoetzmanStarringMeryl StreepPierce BrosnanColin FirthStellan SkarsgårdJulie WaltersDominic CooperAmanda SeyfriedChristine BaranskiCinematographyHaris ZambarloukosEdited byLesley WalkerMusic byBenny AnderssonBjörn UlvaeusProductioncompaniesLittlestar ProductionsPlaytoneRelativity MediaDistributed byUniver...

 

1999 Hong Kong filmFascination AmourFilm posterTraditional Chinese愛情夢幻號Simplified Chinese爱情梦幻号Hanyu PinyinÀi Qíng Mèng Huàn HàoJyutpingNgoi3 Cing4 Mung6 Waan6 Hou6 Directed byHerman YauScreenplay byRaymond WongChau TingWong Ho-waProduced byRaymond WongStarringAndy LauHikari IshidaCinematographyJoe ChanEdited byRobert ChoiMusic byMak Chun HungProductioncompaniesMandarin FilmsFitto MovieDistributed byMandarin Films DistributionRelease date13 February 1999...

Former railway station in Leicestershire, England CountesthorpeThe railway inn near the site of the station in 1988General informationLocationCountesthorpe, BlabyEnglandCoordinates52°33′17″N 1°09′04″W / 52.5547°N 1.1511°W / 52.5547; -1.1511Grid referenceSP576955Platforms2Other informationStatusDisusedHistoryOriginal companyMidland Counties RailwayPre-groupingMidland RailwayPost-groupingLondon, Midland and Scottish RailwayKey dates1840 – June 1842Station o...

 

ITV weekend service for London LWT redirects here. For other uses, see LWT (disambiguation). London Weekend redirects here. For the pirate radio station, see London Weekend Radio. London Weekend TelevisionVersion of logo introduced in 1978The LWT region when it lost its identity in 2002TypeRegion of television networkBranding LWT (1978–2002) London Weekend (1969–1978) London Weekend Television (1968–1969) CountryUnited KingdomFirst air date2 August 1968; 55 years ago&#...

 

Government of Thailand since 2023 Srettha cabinet63rd Council of Ministers of Thailand2023–presentDate formed1 September 2023 (2023-09-01)People and organisationsMonarchVajiralongkornPrime MinisterSrettha ThavisinPrime Minister's history2023–presentDeputy Prime Minister Phumtham Wechayachai Somsak Thepsuthin Parnpree Bahiddha-nukara Anutin Charnvirakul Patcharawat Wongsuwan Pirapan Salirathavibhaga No. of ministers34Member party Pheu Thai Bhumjaithai Palang Pracharath Unite...

Ethnic group from Eastern Tanzania ZaramoWazaramoTotal population~0.7 million[1]Regions with significant populations Tanzania Dar es Salaam Region (Temeke District), (Ilala District), (Ubungo District),(Kinondoni District), (Kigamboni District) Pwani Region (Chalinze District),(Mkuranga District), (Kisarawe District), (Kibaha District)LanguagesZaramo & Swahili language[1]ReligionIslam (Sunni)[2] African Traditional ReligionRelated ethnic groupsLugulu, Kutu, Kw...

 

Species of mammal East Caucasian tur At Zoo Augsburg Conservation status Near Threatened (IUCN 3.1)[1] Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Mammalia Order: Artiodactyla Family: Bovidae Subfamily: Caprinae Tribe: Caprini Genus: Capra Species: C. cylindricornis Binomial name Capra cylindricornis(Blyth, 1841) The East Caucasian tur (Capra cylindricornis), also known as the Daghestani tur, is a mountain-dwelling caprine living in ...

 

Youth program oriented in aerospace technology This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Aerospace Cadets of the Philippines – news · newspapers · books · scholar · JSTOR (May 2019) (Learn how and when to remove this template message) The Aerospace Cadets of the Philippines or ACP program is a co-educational youth progr...

Phenomenon of famines in the Indian subcontinent Victims of the Great Famine of 1876–78 in India, pictured in 1877 Famine had been a recurrent feature of life in the South Asian subcontinent countries of India and Bangladesh, most notoriously under British rule. Famines in India resulted in millions of deaths over the course of the 18th, 19th, and early 20th centuries. Famines in British India were severe enough to have a substantial impact on the long-term population growth of the country ...

 

Former railway station in England Romney SandsStation on heritage railwayStation signal box, looking towards DungenessGeneral informationLocationRomney Marsh, Folkestone & HytheEnglandGrid referenceTR081219Managed byRHDRPlatforms2Key datesMay 1928Opened as Maddiesons Camp1940closed1947reopened1974resited1980renamed Romney Sands Romney Sands Railway Station is a station on the Romney, Hythe and Dymchurch Railway in Kent, England. It is located on the bleakest part of the Romney Marsh, a sh...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!