標籤:十六進位 二進位 八進位 十進位 字母
// int a = 010 + 10 ; //0開頭是八進位.
//0b 開頭是二進位
//0x 開頭是十六進位
// printf("%d " ,a ); //%d 列印十進位整數.
//%x 列印十六進位. (字母小寫) %X 列印十六進位 (字母大寫)
// %o 列印八進位
//一個位元組 又是八位位元.
//位元運算符
//按位與 & (同為1 , 則為1 , 否則 為0 );
// 按位或 | (同為 0 , 則為 0 , 否則 為 1 );
//按位非 ~
//按位異或 ^ (相同為 0 ,不同為 1);
// 左移 運算子 左移一位相對於乘 2 ;
// 右移 運算子 右移一位相對於除 2 ;
//二進位的高四位 和第四位互換.
unsigned char a = 130 ;
unsigned char left = 0; //儲存左移之後的結果
unsigned char right = 0 ; //儲存右移之後的結果
left = a << 4 ;
right = a >> 4 ;
printf("%d" , left | right) ;
//位元的奇偶位互換 .
//1,偶~奇 (右移一位)
// 保留奇數位,將偶數位清零 . & 01010101
//2,奇 ~ 偶 (左移一位) ;
//保留偶數位 , 將奇數位 清零 & 10101010
/**
unsigned char b = 0b10110111;
unsigned char left = 0 ; //儲存左移後的結果
unsigned char right = 0 ; //儲存右移後的結果
//如果想做清零操作使用 按位與 , 清零位為 0 ,保留位為1
//(1) 先左移一位
*
left = b << 1;
//(2) 儲存偶數位 ,將奇數位清零
left = left & 0b10101010;
//(3)右移一位
right = b >> 1 ;
//(4)保留偶數位 , 將奇數位 清零
right = right & 0b01010101 ;
//(5) 按位或
printf("%d\n" , left | right);
*/
//棧區記憶體配置原則:從高到低分配,從低到高 存取
// 地址 : 記憶體單元的編號.
//
// int a = 10 ;
// int b = 5 ;
// printf("%p %p\n",&a ,&b);
// int a [5] = {1,2,3,4,5};
//
// printf("%p \n%p \n%p \n%p \n%p \n %p \n" ,&a[0], &a[1] ,&a[2] ,&a[3] ,&a[4] ,a);
// printf("%d \n " , 3 ^ 5);