31. biti set edememe sorunu

Başlatan satilla, 25 Temmuz 2011, 13:17:21

satilla

LPC_SC->PCONP |= (1<<30); bu şekilde 30. biti set edebiliyorum ama benim pconp'nin 31. bitini set etmem gerekiyor
30 yerine 31 yazıncada "integer operation result is out of range" gibi uyarı veriyor
ne yapsam bu warning kalkar

fahri-

Bildiğim kadarıyla integer işlemlerde 31. bit işaret bitidir. o nedenle bu uyarıyı veriyor olabilir.

yamak

1UL<<31 şeklinde yazmayı deneyin

satilla

Alıntı yapılan: yamak - 25 Temmuz 2011, 14:36:58
1UL<<31 şeklinde yazmayı deneyin
evet hocam oldu bunun farkı nedir diğer tanımlamalardada kullanmamnın avantajı  varmı

yamak

1 i 31 bit kaydırdığımızda int sınırları dışına çıktığımız için 1UL yazarak yapılan işlemi long olarak kabul et diyoruz derleyiciye.Yani int sınırları dışına çıkmayacaksak bunu yapmaya gerek yok.