您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
位運(yùn)算符的基本規(guī)則
1,位運(yùn)算符都是針對(duì)整數(shù)的二進(jìn)制數(shù)字形式而進(jìn)行的。
2,按位與運(yùn)算基本規(guī)則(規(guī)則表):
1 & 1 ==> 1
1 & 0 ==> 0
0 & 1 ==> 0
0 & 0 ==> 0;
3, 按位或運(yùn)算基本規(guī)則
1 | 1 ==> 1;
1 | 0 ==> 1;
0 | 1 ==> 1
0 | 0 ==> 0
4,按位非運(yùn)算:
~ 1 ==> 0
~ 0 ==> 1
5,按位異或運(yùn)算:
1 ^ 1 ==> 0
0 ^ 0 ==> 0
1 ^ 0 ==> 1
0 ^ 1 ==> 1
規(guī)律:相同就是0,不同就是1
按位與運(yùn)算:&
形式:A & B; //A和B都是數(shù)字,其實(shí)是常規(guī)的10進(jìn)制數(shù)字,但內(nèi)部會(huì)按二進(jìn)制進(jìn)行計(jì)算
含義:將A和B的二進(jìn)制形式的每一個(gè)位上的二進(jìn)制數(shù)字進(jìn)行按位與(&)運(yùn)算之后的結(jié)果。
說明:一個(gè)數(shù)字的二進(jìn)制形式通常是32位的0和1的組合,也可能是64位,但未了說明問題,我們通常只用8位。
舉例:
$r1 = 9 & 13; //9的二進(jìn)制是“1001”,13的二進(jìn)制是“1101”
結(jié)果是“00001001”,即9
按位或運(yùn)算:
形式:A | B; //A和B都是數(shù)字,其實(shí)是常規(guī)的10進(jìn)制數(shù)字,但內(nèi)部會(huì)按二進(jìn)制進(jìn)行計(jì)算
含義:將A和B的二進(jìn)制形式的每一個(gè)位上的二進(jìn)制數(shù)字進(jìn)行按位或(|)運(yùn)算之后的結(jié)果。
舉例:
$r1 = 18 | 10; //18的二進(jìn)制是“10010”,23的二進(jìn)制是“1010”
結(jié)果是“00011010”,即26
按位左移運(yùn)算:<<
形式: A << n; //A是一個(gè)要被移動(dòng)的數(shù)字,同樣可以是普通數(shù)字,但按二進(jìn)制去運(yùn)算,n是一個(gè)指定要移動(dòng)的位數(shù)
含義:將數(shù)字A的二進(jìn)制形式的每一個(gè)位上的數(shù)字往左邊移動(dòng)指定的位數(shù)n,則最左邊的n位移出去了就不管了,最右邊空出來的n位,補(bǔ)0就可以。
舉例:
$r1 = 9 << 2; //9的二進(jìn)制形式為:1001
結(jié)果是:32 + 4 = 36
按位右移運(yùn)算:>>
形式: A >> n; //A是一個(gè)要被移動(dòng)的數(shù)字,同樣可以是普通數(shù)字,但按二進(jìn)制去運(yùn)算,n是一個(gè)指定要移動(dòng)的位數(shù)
含義:將數(shù)字A的二進(jìn)制形式的每一個(gè)位上的數(shù)字往右邊移動(dòng)指定的位數(shù)n,則最右邊的n位移出去了就不管了,最左邊空出來的n位,補(bǔ)0就可以(對(duì)正數(shù),實(shí)際是補(bǔ)符號(hào)位)。
舉例:
$r1 = 9 >> 2; //9的二進(jìn)制形式為:1001
結(jié)果就是:2
按位非:
將一個(gè)數(shù)字的二進(jìn)制形的每一個(gè)二進(jìn)制數(shù)字取反所得到的結(jié)果
按位異或:
將2個(gè)整數(shù)的二進(jìn)制形式的每一個(gè)對(duì)應(yīng)數(shù)字進(jìn)行異或運(yùn)算之后的結(jié)果。
原碼,反碼,補(bǔ)碼介紹
原碼:就是“原來的二進(jìn)制碼”,其實(shí)就是我們可以理解的按10進(jìn)制轉(zhuǎn)換為二進(jìn)制之后得到的一個(gè)字符碼。
原碼在數(shù)學(xué)上都是可以理解的。
但在實(shí)際的計(jì)算機(jī)的運(yùn)行過程中,卻常常不用原碼,所以就有反碼,補(bǔ)碼的問題。
在此基礎(chǔ)上上,規(guī)則:一個(gè)二進(jìn)制數(shù)字的第一個(gè)位是符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。
舉例(都以8位為例):
7: 00000111
-7: 10000111
反碼:
正數(shù)的反碼是其本身。
負(fù)數(shù)的反碼,就是將原碼的非符號(hào)部分,每一位取反。
舉例:
7: 00000111
-7: 11111000
補(bǔ)碼:
正數(shù)的補(bǔ)碼是其本身。
負(fù)數(shù)的反碼,符號(hào)位不變,其余每一位取反之后,整體加1(即反碼加1)
舉例:
7: 00000111
-7: 11111001
上一篇:說說M451例程之PWM
下一篇:C語言二維數(shù)組
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08