Previous
Next

Bit temelli (bitwise) operatörler ile mantıksal operatörler arasındaki fark

by Cem Kefeli 6. Temmuz 2017 23:24

Sadece tek bir karakterin yazılımınızın performansını ve gidişatını nasıl kolayca değişitirebileceğini görmek istiyorsanız yazının devamını okumanızı öneririm.

İlk önce bit temelli (bitwise) 've' (&) işaretinden bahsetmek istiyorum. Bit temelli işlemler, meşhur 'Olmak ya da olmamak, işte bütüm mesele bu!' sözüne uygunand (&) ve or (|) operatörleri için değer/sonuç tablosu bir şekilde var olan (1) ya da olmayan (0) değerlerin birbiri ile münasebeti ile ilgileniyor. 'veya' (|) operatörünü bir matematiksel işaret olarak ele alacak olursak toplama işlemine denk tutabiliriz. Eğer 'veya' işlemine girecek değerlerden herhangi birisi anlamlıysa yani '1' ise sonuç da anlamlı (true) olacaktır. Yapılan işlem içerisinde yalnızca tek bir 1'in olması sonucun '1' olması için yeterlidir. 've' (&) operatörünü bir matematiksel işaret olarak ele alacak olursak da çarpma işlemine denk tutabiliriz. Eğer 've' işlemine girecek değerlerden herhangi birisi anlamsızsa yani '0' ise sonuç da anlamsız (false) olacaktır. Yani yapılan işlem içerisinde yalnızca tek bir '0'ın olması sonucun '0' olması için yeterlidir. Bu basit bit temelli işler için bir değer/sonuç tablosu oluşturmak gerekirse sağdaki tablo karşımıza çıkar.

Bu ön bilgilerden sonra şimdi artık yazının ana konusuna gelecek olursak asıl önemli noktalardan birisi de mantıksal işlemler için 've' ve 'veya' operatörlerinin nasıl yorumlanacağıdır. Öncelikle şunu belirtmek gerekir ki eğer bit temelli işlem yapacak olursanız sonuç da yine bit temelli olacaktır. Çalışma anında bit temelli işlemlerde yorum gücü katma değeri yoktur. Sırası ile istenilen hesaplamadaki bit temelli işlemler yapılır, nihayetinde de yine bit temelli bir sonuç elde edilir. Mantıksal işlemlerde ise uygulama çalışma anında yine bit değerler üzerinden bir işlem yapılmaktadır ama bu sefer bir yorumlama katma değeri de söz konusudur. Biraz açacak olursak örneğin bir 'if' koşulu içerisinde yer alan aşağıdaki ifadeyi inceleyelim; Fazlası...

Yaz saati uygulaması ve tzupdater ile java güncellemesi yapılması

by Cem Kefeli 10. Ekim 2016 22:09

Yaz saati uygulaması Türkiye'de 1972 yılından 2016 yılına kadar doğrudan enerji tasarrufu amaçlı olarak gün ışığından daha fazla faydalanabilmek amacıyla uygulanmıştır. Bu uygulama ile birlikte ilkbahar aylarının başlangıcında saatler bir saat ileri alınır ve Türkiye saati UTC+3 olur. Sonbahar aylarının sonuna doğru ise saatler bir saat geri alınarak ülke zaman dilimi UTC+2'ye geri döner ve yaz saati uygulaması ise son bulmuş olur. Yani aslında Türkiye'nin gerçek zaman dilimi UTC+2 olarak belirlenmiştir. UTC+3 ise yaz saati uygulaması için geçici bir süreliğine geçilen bir zaman dilimidir.

2016 ekim ayı itibari ile ise Bakanlar Kurulu'nun 2013'de almış olduğu ama 2016'ya kadar uygulanmayan karar (Resmi gazete 2016/9154) doğrultusunda saatlerin geri alınması uygulamasına son verilmiştir. Yani artık tüm yıl boyunca yaz saati uygulanmasının kullanılması ya da kış saati uygulamasının ülke genelinde son bulması kararlaştırılmıştır.

Özellikle bankacılık ve iletişim sektörü için bu durumdan nasıl etkilenileceği, olumsuz etkilerinin neler olacağının tartışıldığı bir ortamda bilişim sistemleri de kendisini yeni karara adapte etmeye çalışıyor. Binlerce ve hatta çok büyük olasılıkla on binlerce sistem bu karar için elden geçiriliyor... İşletim sistemlerine yamalar yükleniyor, veritabanlarına yamalar yükleniyor, vb... Bu bağlamda kurumsal birçok yazılımın vazgeçilmezi olan Java için de yeni koşullara ayak uydurabilmenin bazı şartları bulunuyor.

iana.org üzerinden indirebileceğiniz bir time zone (tz) güncellemesi ile Java kurulumunuzu Türkiye için yeni time zone'a uygun hale getirebilirsiniz. Aşağıda yüklemenin nasıl yapılacağını göstermeye çalışacağım fakat bununla birlikte bu güncellemenin etkilerinin de neler olacağını görebilmek, analiz edebilmek için birkaç satırdan oluşan bir test kodu yazdım ve yaşadıklarımı aşağıdaki gibi aktarmaya çalışıyorum;

Java test kodumuz aşağıdaki gibi;

Time Zone test uygulaması  |  Gizle  |  Göster
package datetimeapp;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;

/**
 *
 * @author cem.kefeli
 */
public class DatetimeApp {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyy HH:mm:ss.SSS");
        
        ZonedDateTime zonedDateTime_Local = ZonedDateTime.now();
        Date dateTime_ZonedLocal = Date.from(zonedDateTime_Local.toInstant());        
        System.out.println("dateTime_ZonedLocal: "+simpleDateFormat.format(dateTime_ZonedLocal));
        
        ZoneId zoneId_Turkey = ZoneId.of("Europe/Istanbul"); // Europe/Istanbul +02:00/+03:00
        ZonedDateTime zonedDateTime_Turkey = ZonedDateTime.of(LocalDateTime.now(), zoneId_Turkey);
        Date dateTime_ZonedTurkey = Date.from(zonedDateTime_Turkey.toInstant());        
        System.out.println("dateTime_ZonedTurkey: "+simpleDateFormat.format(dateTime_ZonedTurkey));
        
        ZoneId zoneId_Any = ZoneId.of("Asia/Baku"); // Asia/Baku +04:00
        ZonedDateTime zonedDateTime_Any = ZonedDateTime.of(LocalDateTime.now(), zoneId_Any);
        Date dateTime_ZonedAny = Date.from(zonedDateTime_Any.toInstant());        
        System.out.println("dateTime_ZonedAny: "+simpleDateFormat.format(dateTime_ZonedAny));
    }
}

Eğer bu kodu derleyerek çalıştıracak olursanız aşağıdaki gibi bir çıktı ile karşılaşıyor olacaksınız. Şu anda yaz saati modunda ve UTC+3 zaman diliminde olduğumuz için Bakü yerel zaman dilimi ile aramızdaki zaman farkı bir saat olarak görülecektir. Sistem zamanı ve java zamanı ise aynı görülüyor.Fazlası...

Hakkımda...

Cem KEFELİ

Electronics and
Telecommunication Eng.
devamı...


Son yapılan yorumlar...

Comment RSS

Yasal bir uyarı...

Disclaimer"Bu web sitesinde görmüş olduğunuz bilgilerin, dokümanların ve diğer materyallerin kullanılmasından doğabilecek hiç bir sorumluluktan site sahibi sorumlu tutulamaz. Web sitesi içerisinde yer alan yazılar, yorumlar, resimler ve diğer tüm içerikler yalnızca sahibinin görüşünü yansıtmakta olup içeriğin sahibi kişilerin çalıştığı kurumları bağlayıcı hiç bir nitelik taşımamaktadır. Yapılan tüm alıntılar mutlaka kaynak gösterilerek verilmeye çalışılmaktadır. Web sitesi içerisinde bulunan ilgili materyaller, ilgili yasal kurumlar tarafından uygun görülmemesi durumda kaldırılacaktır."
General