c語言 進製和位運算

2022-03-28 01:00:14 字數 2229 閱讀 1784

一.進製

十進位制轉n進製: 連除倒取餘.

以 10 為例,不同進製的表示方法:

十進位制: 10;

二進位制: 0b1010;

八進位制: 010;

十六進製制: 0x10;

int a = 100;

printf("%o",a);

如何輸出進製數:

%d ------ 十進位制

%o  ------ 八進位制

%0x ----- 十六進製制

位運算子:按位與 &, 按位或 |, 按位非 ~, 按位異或 ^, 左移 <<, 右移 >>

按位與 & : 同1 為 1,否則為 0,經常用於對某一位清零.

按位或 | : 同0 為 0,否則為1.經常用於保留某一位,

按位非 ~ : 如果是乙個有符號的數,則最高位代表符號位,1 代表負數, 0 代表正數,

資料在記憶體中儲存時,是以補碼的形式儲存的,正數的補碼是本身,負數的補碼是 絕對值 取反 加 1 .

按位異或 ^ : 相同為 0,不同為 1 ;

左移 << :

unsigned char d = 1;

printf("%d",d << 4);

右移 >>

unsigned char a = 255;

printf("%d",a >> 1);

unsigned char number = 0b01100100;

unsigned char left = number << 4;

unsigned char right = number >> 4;

unsigned char result = left | right;

printf("%d",result);

//將 10010010 奇偶位互換

unsigned char num = 0b10010010;

//清零操作使用 按位&, 保留的位數為 1 ,清 0 數字為 0 ;

//1.將奇數字變偶數字,左移一位

unsigned char left = num << 1;

//2.保留偶數字,奇數字清 0

unsigned char clearji = left & 10101010;

//3.將偶數字變奇數字,右移一位

unsigned char right = num >> 1;

//4.保留奇數字偶數字清0

unsigned char clearou = right & 01010101;

//5.最後按位或 |

unsigned char result = clearji | clearou;

printf("%d",result);

資料型別的取值範圍: 

無符號: char 型別  0 -- 255 (2 的8次方 - 1);

short     0 -- 2的16次方 - 1;

int       0 -- 2的32次方 - 1;

有符號: char    -2 的 7次方 -- 2 的7次方 - 1;

short   -2 的15次方 -- 2 的15次方 - 1;

int     -2 的31次方 -- 2 的31次方 - 1;

char b = ~4;

int a = 5 ^ 7;

printf("%d",b);

//棧區記憶體分配原則: 由高到低分配, 由低到高訪問.

int a = -5;

printf("%p\n",&a);

int b = 10;

printf("%p\n",&b);

//陣列名代表陣列的首位址,也就是陣列的第乙個元素位址,是乙個常量位址

int a[4] = ;

printf("%d\n", &a[0]);

printf("%p\n", &a[1]);

printf("%p\n", &a[2]);

printf("%p\n", &a[3]);

printf("%p\n", &a);

//交換兩個數的值 不借助第三方變數

int a = 20;//1001

int b = 36;//0101

printf("交換前 a = %d,b = %d\n",a, b);

a = a ^ b;//1100

b = b ^ a;//1001

a = a ^ b;//0101

printf("交換後 a = %d,b = %d\n",a, b);

C語言學習筆記 進製和位運算

第一部分 進製 一 基本概念 進製就是不同的計數方式,預設情況下寫的數字都是十進位制的。1 二進位制 逢2進製,0b或0b開頭 int number2 0b1100 2 十進位制 逢10進製 int number 12 3 八進位制 逢8進製,0開頭 int number3 014 4 十六進製制 ...

位運算和進製轉換

位運算指的是對二進位制進行的計算處理。主要有 與 或 異或 求反 其特徵為 都是1的時候才是1 如 13 7 計算過程為 13的二進位制 1101 7的二進位制 0111 得到結果 0101 轉換成10進製則是5 計算過程為 1101 0111 按照或運算得到結果是 1111 轉化成10進製為 15...

c語言位運算

c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...