{"id":480,"date":"2018-11-01T18:08:33","date_gmt":"2018-11-01T15:08:33","guid":{"rendered":"http:\/\/oguzkartal.net\/blog\/?p=480"},"modified":"2021-10-31T16:05:13","modified_gmt":"2021-10-31T13:05:13","slug":"negatif-sayilarin-bitsel-organizasyonu","status":"publish","type":"post","link":"https:\/\/www.oguzkartal.net\/blog\/index.php\/2018\/11\/01\/negatif-sayilarin-bitsel-organizasyonu\/","title":{"rendered":"Negatif Say\u0131lar\u0131n Bitsel Organizasyonu"},"content":{"rendered":"<p>E\u011fer daha \u00f6nce verilerle bitsel d\u00fczeyde i\u015flem yapt\u0131ysan\u0131z yahut ikili say\u0131 sistemine a\u015final\u0131\u011f\u0131n\u0131z varsa verilerin bilgisayar sistemlerinin \u00e7al\u0131\u015ft\u0131\u011f\u0131 binary (ikili) sistemde nas\u0131l tutuldu\u011funu ve bu verilerin bizlerin anlayabilece\u011fi decimal (onluk) yahut bu de\u011ferlere kar\u015f\u0131l\u0131k gelen karakter setleriyle olan ili\u015fkilerini biliyorsunuzdur.<\/p>\n<p>Verilerin tutuldu\u011fu 8 bitlik \u00f6beklerden olu\u015fan byte\u2019lar i\u015faretsiz veri \u00f6bekleridir. Bu sebepten her ne kadar bitsel olarak verilerle \u00e7al\u0131\u015f\u0131lsa da \u00e7o\u011fu programc\u0131n\u0131n g\u00fcndeminde negatif say\u0131lar\u0131n bitsel organizasyonu bulunmaz.<\/p>\n<p>\u00d6rne\u011fin \u2018U\u2019 karakteri ASCII tablosunda 85 de\u011ferine kar\u015f\u0131l\u0131k gelir. Bu de\u011fer pozitif bir decimal de\u011ferdir. Ve ikili sistemdeki kar\u015f\u0131l\u0131\u011f\u0131 \u202d01010101\u2019dir. 8 bit uzunlu\u011fundad\u0131r. O sebepten ASCII karakterler 8 bit yani 1 byte uzunlu\u011funda olabilir.<\/p>\n<p>Bilgisayar sistemleri bir pozitif tamsay\u0131y\u0131 negatif olarak de\u011ferlendirmek ve depolamak istedi\u011finde \u00f6ncelikle bu say\u0131lsal de\u011fere kar\u015f\u0131l\u0131k gelen ikili veriye bir i\u015faret (flag) koymas\u0131 gerekir. Bu i\u015faret sayesinde binary verinin negatif olarak de\u011ferlendirilece\u011fini anlam\u0131\u015f olur. Bu i\u015faret ise 1 bitlik bir de\u011ferdir. Bu 1 bitlik de\u011fere ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 \u00fczere <strong>i\u015faret biti<\/strong> (<strong>sign bit<\/strong>) denilir. Bu i\u015faret biti ikili verinin en y\u00fcksek anlaml\u0131 lokasyonuna atanmaktad\u0131r. Ancak say\u0131sal de\u011ferin negatif olarak de\u011ferlendirilmesinde veri tipi dolay\u0131s\u0131 ile uzunlu\u011fu \u00f6nemlidir.<\/p>\n<p>Yukar\u0131daki \u00f6rne\u011fimizi ele al\u0131rsak 01010101 ikili de\u011ferinin i\u015faret bitini set etti\u011fimizde art\u0131k bu de\u011fer 8 bit s\u0131n\u0131r\u0131nda negatif olarak de\u011ferlendirilecektir. \u202d01010101 de\u011ferinin <strong>en y\u00fcksek anlam\u0131 biti<\/strong> (<strong>Most significant bit \u2013 MSB<\/strong>) en soldaki 8. bittir. Bu biti set etti\u011fimizde 8 bitlik bir s\u0131n\u0131r i\u00e7erisinde veri negatif olacakt\u0131r. C dilindeki veri tipleri ve <em>signed (i\u015faretli),<\/em>&nbsp;<em>unsigned<\/em> (i\u015faretsiz) veri tipi ayr\u0131m\u0131 bu ama\u00e7lad\u0131r. Bir byte uzunlu\u011funda i\u015faret biti set edilmi\u015f verinin, 2 byte (short) tipinde tutulmas\u0131 bu verinin derleyici ve en nihayetinde i\u015flemci taraf\u0131ndan en y\u00fcksek anlaml\u0131 (<strong>Most significant bit &#8211; MSB<\/strong>) bitinin 8. bit yerine 16. bit olarak de\u011ferlendirilmesini sa\u011flayacakt\u0131r. Dolay\u0131s\u0131 ile 8 bitlik alanda tutulan negatif bir de\u011ferin 16 bitlik \u00e7er\u00e7evede pozitif bir say\u0131 olarak de\u011ferlendirmesine sebep olacakt\u0131r.<\/p>\n<p>Bu bilgiden yola \u00e7\u0131karak bir say\u0131n\u0131n negatif olup olmad\u0131\u011f\u0131n\u0131 <span class=\"lang:c decode:true crayon-inline \">if (value &lt; 0)<\/span>&nbsp; yerine bitsel d\u00fczeyde de kontrol edebiliriz. De\u011ferin en y\u00fcksek anlaml\u0131 biti set edilmi\u015f de\u011feri kar\u015f\u0131la\u015ft\u0131raca\u011f\u0131m\u0131z de\u011fer ile Mans\u0131ksal ve (Logical And) i\u015flemine soktu\u011fumuzda say\u0131n\u0131n negatif olup olmad\u0131\u011f\u0131n\u0131 \u00f6\u011freniriz. 8 bitlik \u00e7er\u00e7evede en y\u00fcsek anlam\u0131 biti set edilmi\u015f de\u011fer 10000000&#8217;dir bunun hex kar\u015f\u0131l\u0131\u011f\u0131 ise 0x80 de\u011feridir.<\/p>\n<pre class=\"lang:c decode:true\">char value = -84;\n\nif (value &amp; 0x80) \/\/hex 10000000 \n    printf(\"de\u011fer negatif\");\nelse\n    printf(\"de\u011fer pozitif\");<\/pre>\n<p>Yukar\u0131daki kod \u00e7al\u0131\u015ft\u0131\u011f\u0131nda de\u011fer negatif \u00e7\u0131kt\u0131s\u0131 g\u00f6r\u00fcnecektir. Yukar\u0131da \u00f6rne\u011fini verdi\u011fimiz &#8216;U&#8217; ASCII karakterin desimal de\u011ferine ait ikili say\u0131n\u0131n en y\u00fcksek anlam\u0131 bitini set en y\u00fcksek anlaml\u0131 biti (<strong>MSB<\/strong>) set etti\u011fimizde elde etti\u011fimiz yeni de\u011fer 11010101\u2019in kar\u015f\u0131l\u0131\u011f\u0131 \u201343 de\u011feridir. Pozitif de\u011feri negatif olarak de\u011ferlendirilmesini sa\u011flad\u0131k ancak say\u0131sal de\u011fer olarak <strong>yanl\u0131\u015f<\/strong> bir sonu\u00e7 elde ettik. \u00c7\u00fcnk\u00fc g\u00fcn\u00fcm\u00fczde ge\u00e7erli olan t\u00fcm bilgisayar mimarilerinde negatif say\u0131 sadece bir i\u015faret bitinden ibaret olarak kodlanmaz. Elbette pek \u00e7ok farkl\u0131 \u015fekilde negatif say\u0131y\u0131 kodlayan sistemler olabilir ancak g\u00fcn\u00fcm\u00fczde kulland\u0131\u011f\u0131m\u0131z bilgisayarlardan, ak\u0131ll\u0131 telefonlar\u0131n i\u015flemci mimarileri biraz sonra de\u011finece\u011fim \u015fekilde negaif say\u0131y\u0131 kodlarlar. Peki negatif say\u0131lar tam olarak nas\u0131l kodlan\u0131r?<\/p>\n<h2>\u0130kinin T\u00fcmleyeni (Two\u2019s Complement)<\/h2>\n<p>\u0130kinin t\u00fcmleyeni bilgisayar mimarilerinin negatif say\u0131lar\u0131 kodlama bi\u00e7imidir. Bunun yayg\u0131n olarak tercih edilmesinin avantajlar\u0131 vard\u0131r. \u0130kinin t\u00fcmleyeni olarak kodlamak bitsel matematik i\u015flemlerini ekstra kontrollere yer b\u0131rakmadan do\u011fal \u015fekliyle ger\u00e7ekle\u015fmesini sa\u011flar. \u0130kinin t\u00fcmleyeni al\u0131nd\u0131\u011f\u0131nda y\u00fcksek anlaml\u0131 bit hem say\u0131sal de\u011ferin i\u015faretini de\u011fi\u015ftirir hem de say\u0131n\u0131n de\u011ferine do\u011frudan etki eder. Di\u011fer bir durum ise sadece i\u015faret biti ile say\u0131n\u0131n pozitif negatif durumunu tutan di\u011fer kodlama metodlar\u0131nda ortaya \u00e7\u0131kan +0 ve \u20130 sorunu ikinin t\u00fcmleyeni olarak yap\u0131lan kodlamada meydana gelmez. Misal bir pozitif de\u011ferin, ikinin t\u00fcmleyeni ile bitsel toplam\u0131 0&#8217;\u0131 do\u011fal olarak verecektir. Matematiksel olarak her ne kadar da s\u0131f\u0131r (0) say\u0131s\u0131n\u0131n i\u015faret almas\u0131 gibi bir durum olmasa da bilgisayar mimarisi a\u00e7\u0131s\u0131ndan 0 say\u0131s\u0131n\u0131n hem pozitif hem de negatif bir de\u011fer alabildi\u011fi varsay\u0131lacak ve sistem bu durumu tolere etmek i\u00e7in ek kontrollere ihtiya\u00e7 duyacakt\u0131r.<\/p>\n<p>\u0130kinin t\u00fcmleyeninde <strong>-2<sup>n-1<\/sup><\/strong> ile<strong>&nbsp;2<sup>n-1 <\/sup>&#8211; 1<\/strong> aral\u0131\u011f\u0131 kadar say\u0131 tan\u0131mlanabilir. Sadece i\u015faret bitiyle ifade edilen di\u011fer sistemlerde bu durum her iki tarafta da<\/p>\n<p>2<sup>n-1 <\/sup>&#8211; 1 kadard\u0131r. \u00c7\u00fcnk\u00fc ikinin t\u00fcmleyeninde say\u0131sal de\u011feri i\u015faret biti de etkileyebildi\u011finden fazladan 1 adet negatif say\u0131sal de\u011fer tan\u0131mlanabilir. \u00d6rne\u011fin ikinin t\u00fcmleyeni ile kodlanm\u0131\u015f 8 bitlik bir uzunlukta <strong>-128<\/strong> ile <strong>127<\/strong> aras\u0131nda say\u0131sal de\u011fer tan\u0131mlanabilir. Veri t\u00fcrlerinin tuttuklar\u0131 de\u011fer limitleri tablolar\u0131nda g\u00f6rd\u00fc\u011f\u00fcn\u00fczde neden bunlar simetrik de\u011fil diye i\u00e7indizden ge\u00e7irdiyseniz sebebi i\u015fte bu :).&nbsp; Di\u011ferlerinde bu her iki tarafta da ayn\u0131d\u0131r. Yani <strong>-127<\/strong> ile <strong>127<\/strong> aral\u0131\u011f\u0131ndad\u0131r. Bu tip avantajlar negatif say\u0131n\u0131n ikinin t\u00fcmleyeni olarak kodlanmas\u0131n\u0131 yayg\u0131n hale getirmi\u015ftir.<\/p>\n<p>\u0130kinin t\u00fcmleyenin t\u00fcmleyeni yine kendisini verir. Yani negatif bir de\u011ferin 2&#8217;nin t\u00fcmleyenini uygulad\u0131\u011f\u0131m\u0131zda yine bize o de\u011ferin pozitif halini verecektir.<\/p>\n<p>\u0130kili say\u0131n\u0131n ikinin t\u00fcmleyenini almak iki \u015fekilde yap\u0131labilir.<\/p>\n<p>Birinci yol \u00f6nce Birin t\u00fcmleyenini al\u0131p bu de\u011fere 1 eklemektir. Birin t\u00fcmleyenini almak demek de\u011ferin bitsel olarak tersini (mant\u0131ksal de\u011fil) almakt\u0131r. Bir ba\u015fka deyi\u015fle 0&#8217;lar 1, 1&#8217;ler 0 yap\u0131l\u0131r. Ard\u0131ndan 1 eklenir.<\/p>\n<p>Di\u011fer yol ise en sa\u011fdan ba\u015flanarak 1 bit g\u00f6rene kadar 0&#8217;lar aynen yaz\u0131l\u0131r. 1 g\u00f6r\u00fcld\u00fc\u011f\u00fcnde 1 de aynen yaz\u0131l\u0131r. Kalan bitlerin ise tersi yaz\u0131l\u0131r. (bit flip)<\/p>\n<p>Yukar\u0131daki 85 desimal de\u011ferinin ikili kar\u015f\u0131l\u0131\u011f\u0131 olan 01010101 de\u011ferine bu i\u015flemlerden birini uygulayal\u0131m.<\/p>\n<p><strong>1. Y\u00f6ntem<\/strong><\/p>\n<pre class=\"striped:false marking:false ranges:false plain:false plain-toggle:false lang:default highlight:0 decode:true\">Orijinal De\u011fer:  01010101\nTersi:           10101010\n\nBu de\u011fere 1 ekleyelim. Unutmaman\u0131z gereken \u015fey 1 eklemenin bitsel toplama i\u015flemidir. 1 de\u011ferinin 8 bitlik uzunlukta 00000001 olarak alg\u0131land\u0131\u011f\u0131n\u0131 unutmay\u0131n. bu 1 eklenmesi sonucunda\n\nBirin T\u00fcmleyeni (Yani de\u011ferin tersi):                10101010\n1 de\u011feri                                             00000001\n-------------------------------------------------------------\nSonu\u00e7:                                               10101011 (-85)<\/pre>\n<p><strong>2. Y\u00f6ntem<\/strong><\/p>\n<p>Orijinal De\u011fer: 01010101<\/p>\n<p>En sa\u011fdan ba\u015flayarak 1 g\u00f6rene kadar t\u00fcm s\u0131f\u0131rlar\u0131 yazal\u0131m. En sa\u011fdaki bit 1. o y\u00fczden yazmam\u0131z gereken bir 0 yok.<\/p>\n<p><strong>0101010<span style=\"color: #ff0000;\">1<\/span><\/strong><\/p>\n<p>1 g\u00f6rene kadar yazal\u0131m demi\u015ftik. En sa\u011fdaki bit zaten 1. Onu aynen en sa\u011fa yaz\u0131yoruz. bir solundaki bite bak\u0131yoruz.<\/p>\n<p><strong>010101<span style=\"color: #ff0000;\">0<\/span>1<\/strong><\/p>\n<p>0. En sa\u011fdan 1&#8217;i g\u00f6rene kadar 1 de dahil olmak \u00fczere hepsini aynen yaz\u0131p, kalanlar\u0131 \u00e7evirece\u011fiz demi\u015ftik. bir \u00f6nceki ad\u0131mda 1&#8217;i g\u00f6r\u00fcp aynen yazm\u0131\u015ft\u0131k. \u015eimdi bu 0 bitinin tersini yaz\u0131yoruz.<\/p>\n<p><strong>000000<span style=\"color: #0000ff;\">11<\/span><\/strong><\/p>\n<p>Yeni de\u011ferimiz bu halde. Bir sonraki (3. bit) 1 de\u011ferinde<\/p>\n<p><strong>01010<span style=\"color: #ff0000;\">1<\/span>01<\/strong><\/p>\n<p>\u00c7evirip yazd\u0131\u011f\u0131m\u0131zda 0 olacak. De\u011ferin son hali<\/p>\n<p><strong>00000<span style=\"color: #0000ff;\">011<\/span><\/strong><\/p>\n<p>T\u00fcm bu ad\u0131mlar\u0131 tekrar etti\u011fimizde a\u015fa\u011f\u0131daki sonuca ula\u015f\u0131r\u0131z.<\/p>\n<pre class=\"striped:false marking:false ranges:false wrap:false wrap-toggle:false plain:false plain-toggle:false expand-toggle:false lang:default highlight:0 decode:true\">Orijinal De\u011fer: 01010101\nSonu\u00e7:          10101011<\/pre>\n<p><strong>C dilinde nas\u0131l yap\u0131l\u0131r?<\/strong><\/p>\n<p>Yukar\u0131da yapt\u0131\u011f\u0131m\u0131z parmak hesab\u0131 ad\u0131mlar\u0131 olay\u0131n mant\u0131\u011f\u0131n\u0131 kavramak i\u00e7indi. Elbette programlama dillerinde bunu b\u00f6yle yapmyoruz. Programlama a\u00e7\u0131s\u0131ndan en kolay ve h\u0131zl\u0131 \u0130kinin t\u00fcmleyenini alma metodu 1. Y\u00f6ntemdir. Yani \u00f6nce tersini al\u0131p 1 eklemek. C dilinde bir ikili verinin tersini mant\u0131ksal de\u011fil (Logical Not) operat\u00f6r\u00fc ile yapar\u0131z. Bu operat\u00f6r de C dilinde <strong>~<\/strong> i\u015fareti (Matematiksel e\u015fitlik belirten i\u015faret) ile simgelenir. T\u0131pk\u0131 and i\u00e7in <strong>&amp; (Ampersand)<\/strong> kullanmam\u0131z gibi. Tersini ald\u0131ktan sonra de\u011fere normal + 1 ile i\u015flemi bitirebiliriz.<\/p>\n<p>\u00d6rne\u011fin 32 bit uzunlu\u011funda olan long veri t\u00fcr\u00fc i\u00e7in bir say\u0131n\u0131n negatif olup olmad\u0131\u011f\u0131n\u0131 e\u011fer negatif de\u011filse negatif yapan C kodu a\u015fa\u011f\u0131daki \u015fekilde yaz\u0131labilir.<\/p>\n<pre class=\"theme:vs2012 striped:false lang:c decode:true\">\/\/LONG veri tipinin derleme zaman\u0131 hesaplanan\n\/\/uzunlu\u011fu\n#define LONG_BITSIZE (sizeof(long) *  8)\n\n\/\/Verilen desimal de\u011feri ikili say\u0131 sistemine\n\/\/g\u00f6re konsola basan fonksiyon.\n\/\/bitSize arg\u00fcman\u0131 ne kadar bit uzunlu\u011fu kadar\n\/\/yaz\u0131lmas\u0131 gerekti\u011fini belirler.\nvoid printAsBinary(long value, int bitSize)\n{\n    for (int i = bitSize - 1; i &gt;= 0; i--)\n    {\n        if (value &amp; (1 &lt;&lt; i))\n            printf(\"1\");\n        else\n            printf(\"0\");\n    }\n}\n\n\/\/\u00f6nce say\u0131n\u0131n desimal de\u011ferini\n\/\/ard\u0131ndan parantez i\u00e7erisinde ikili sistemde\n\/\/kar\u015f\u0131\u011f\u0131n\u0131 ekrana yazan fonksiyon\nvoid printValueAndBinaryFormat(long value)\n{\n    printf(\"%ld (\", value);\n    printAsBinary(value, LONG_BITSIZE);\n    printf(\") \");\n}\n\nint isNegative(long value,int putConsole)\n{\n    if (putConsole)\n        printValueAndBinaryFormat(value);\n\n    \/\/0x80000000 32 bitlik uzunlukta\n    \/\/en y\u00fcksek anlam\u0131 bitin 1 olarak\n    \/\/atand\u0131\u011f\u0131 de\u011ferin hex kar\u015f\u0131l\u0131\u011f\u0131\n    if (value &amp; 0x80000000)\n    {\n        if (putConsole)\n            printf(\"negatif\\n\");\n        return 1;\n    }\n    \n    if (putConsole)\n        printf(\"negatif degil\\n\");\n\n    return 0;\n}\n\n\n\/\/Say\u0131y\u0131 negatif yapan fonksiyon\nlong makeNegative(long value)\n{\n    long negValue;\n\n    \/\/Say\u0131 zaten negatifse \n    \/\/\u0130\u015fleme devam edilmesin\n    if (isNegative(value,FALSE))\n    {\n        printf(\"%ld zaten negatif\\n\",value);\n        return 0;\n    }\n\n    \/\/value de\u011fi\u015fkeni i\u00e7inn ikinin t\u00fcmleyenini al\u0131yoruz\n    negValue = ~value + 1;\n\n    \/\/\u00d6nce orijinal de\u011feri\n    printValueAndBinaryFormat(value);\n    printf(\"\\n\");\n\n    \/\/ard\u0131ndan yeni de\u011feri yaz\u0131yoruz\n    printValueAndBinaryFormat(negValue);\n    printf(\"\\n\");\n\n    return negValue;\n}\n\nint main()\n{\n    isNegative(-182,TRUE);\n    isNegative(182,TRUE);\n    isNegative(65,TRUE);\n    isNegative(-99,TRUE);\n    isNegative(19234,TRUE);\n    isNegative(-19234,TRUE);\n\n    printf(\"854 &gt; %ld\\n\", makeNegative(854));\n    return 0;\n}\n<\/pre>\n<p>Program\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda \u015fu \u00e7\u0131kt\u0131y\u0131 al\u0131r\u0131z.<\/p>\n<pre class=\"striped:false marking:false ranges:false wrap:false wrap-toggle:false plain:false plain-toggle:false lang:default highlight:0 decode:true \">-182 (11111111111111111111111101001010) negatif\n182 (00000000000000000000000010110110) negatif degil\n65 (00000000000000000000000001000001) negatif degil\n-99 (11111111111111111111111110011101) negatif\n19234 (00000000000000000100101100100010) negatif degil\n-19234 (11111111111111111011010011011110) negatif\n854 (00000000000000000000001101010110)\n-854 (11111111111111111111110010101010)\n854 &gt; -854\n\n<\/pre>\n<p>Art\u0131k biglisayar sistemlerinin negatif say\u0131lara nas\u0131l yakla\u015ft\u0131\u011f\u0131n\u0131 biliyorsunuz. Halen akl\u0131n\u0131za tak\u0131lan noktalar varsa yorum olarak sorabilirsiniz. Uzun makaleler yazmak i\u00e7in \u015fu s\u0131ralar yeterli vaktim olmad\u0131\u011f\u0131ndan buray\u0131 da bombo\u015f b\u0131rakmamak ad\u0131na bu tarzda k\u00fc\u00e7\u00fck ancak programc\u0131ya bir\u015feyler katabilecek konulara k\u0131sa k\u0131sa de\u011finmeye gayret edece\u011fim.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>E\u011fer daha \u00f6nce verilerle bitsel d\u00fczeyde i\u015flem yapt\u0131ysan\u0131z yahut ikili say\u0131 sistemine a\u015final\u0131\u011f\u0131n\u0131z varsa verilerin bilgisayar sistemlerinin \u00e7al\u0131\u015ft\u0131\u011f\u0131 binary (ikili) sistemde nas\u0131l tutuldu\u011funu ve bu verilerin bizlerin anlayabilece\u011fi decimal (onluk) yahut bu de\u011ferlere kar\u015f\u0131l\u0131k gelen karakter setleriyle olan ili\u015fkilerini biliyorsunuzdur. Verilerin tutuldu\u011fu 8 bitlik \u00f6beklerden olu\u015fan byte\u2019lar i\u015faretsiz veri \u00f6bekleridir. Bu sebepten her ne kadar&#8230;<\/p>\n","protected":false},"author":1,"featured_media":508,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"twitterCardType":"","cardImageID":0,"cardImage":"","cardTitle":"","cardDesc":"","cardImageAlt":"","cardPlayer":"","cardPlayerWidth":0,"cardPlayerHeight":0,"cardPlayerStream":"","cardPlayerCodec":"","footnotes":""},"categories":[64,96,95],"tags":[98,97,101,103,102,100,99],"class_list":["post-480","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-systems","category-tips","tag-bitsel","tag-bitwise","tag-islemci","tag-kodlama","tag-mimari","tag-negatif-sayi","tag-operator"],"_links":{"self":[{"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/posts\/480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=480"}],"version-history":[{"count":22,"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/posts\/480\/revisions"}],"predecessor-version":[{"id":917,"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/posts\/480\/revisions\/917"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/media\/508"}],"wp:attachment":[{"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oguzkartal.net\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}