2016년 1월 4일 월요일

Android에서 At-symbol(@) 와 Question-Mark(?)의 차이점.

At-symbol(@)
Resource를 참조하는 기호로 현재 프로젝트나 Android Framework 내에 있는 Resource를 참고 할 때 사용함

Question-Mark(?)
현재 정의 중인 Theme 내에 있는 사항을 참조 할 때 사용됨


res/value/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="CustomTheme">       
    <item name="android:windowNoTitle">true</item>
    <item name="windowFrame">@drawable/screen_frame</item>
    <item name="windowBackground">@drawable/screen_background_white</item>
    <item name="panelForegroundColor">#FF000000</item>
    <item name="panelBackgroundColor">#FFFFFFFF</item>
    <item name="panelTextColor">?panelForegroundColor</item>
    <item name="panelTextSize">14</item>
    <item name="menuItemTextColor">?panelTextColor</item>
    <item name="menuItemTextSize">?panelTextSize</item>
  </style>
</resources>

비트 연산으로 홀수 짝수 구분하기

n & 1

입력 숫자 n에서 홀수, 짝수를 결정 하는 것은 마지막 자리 숫자이기 때문에 
위 연산의 결과가 1이면 홀수, 0이면 짝수 이다.


ex 1)
10 이라는 10진수 정수를 예로 들면
10은 2진수로 표현하면 1010 이고,

10 & 1 은 1010 & 1과 동일함.

그럼 1010의 마지막 자리는 0 이고, 0과 1을 & 연산 하면 0 이기 때문에
짝수가 된다.

ex 2)
11은 2진수로 1011이고,
11 & 1 는 1011 & 1 와 동일하고

마지막 자리수는 1이기 때문에 1 & 1 = 1 이기 때문에 홀수 이다.

ex 3)
45라면 2진수로 101101 이기 때문에
45 & 1 은  1 & 1이 되기 때문에 결과는 0으로 홀수 가 된다.


정리)
10 == 1010
1010 & 1 == 0

11 == 1011,
1011 & 1 == 1

45 == 101101
101101 & 1 == 0