C 位運算子,求解

2022-10-20 09:41:18 字數 1562 閱讀 4981

1樓:宇文玉石仉津

c/c++語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。

操作符功能用法~

位求反~expr

<<左移expr1 <<

expr2

>>右移expr1 >>

expr2&位與

expr1

&expr2

^位異或

expr1 ^

expr2|位或

expr1 |

expr2

1#include

2using

namespace

std;

3int

main(){

4unsigned

short

x=3,y=5;

5cout<<"~x="<<(unsignedshort)~x<>1="<<(y>>1)<>1=2**解釋如下:

short為16位整數,故x,y的二進位制表示如下:

x=3(00000000

00000011)

y=5(00000000

00000101)

~00000000

00000011

=11111111

11111100(65532或者-4)(至於為什麼同樣的二進位制位表示的數不一樣,這與計算機的數值表示有關,具體原因可搜尋「補碼」)

00000000

00000011

&00000000

00000101

=00000000

00000001(1)

00000000

00000011

^00000000

00000101

=00000000

00000110(6)

00000000

00000011

| 00000000

00000101

=00000000

00000111(7)

00000000

00000011<<1

=00000000

00000110(6)

00000000

00000101>>1

=00000000

00000010(2)

2樓:世鑲柳

因為是補碼。

437@~/c-cpp]$ cat a.cpp#include

#include

using namespace std;

int main()

[438@~/c-cpp]$ g++ a.cpp[439@~/c-cpp]$ ./a.out-4900000000000000000000000000110000 48

11111111111111111111111111001111 -49

[440@~/c-cpp]$

3樓:幸巴達

都是為了湊足8位或者16位,

計算機內部的資料都是以8的整數倍的位數來儲存的.

c成員運算子和域運算子的區別,C 中 運算子和 運算子有什麼區別

一般成員運算子bai用於選擇結構體du裡zhi面的成員,如struct xx xx.a 3 xx.b 5 域運算dao符一般用來選專用全域性的函式,如在cwnd類裡要使屬用api的setwindowpos 就要用域運算子 setwindowpos c 作用來域運算子 是和類相源關的一般 用語把函式的...

c語言運算子,C語言 運算子 是怎麼運算的

9除以5商1餘4 不是說小數最後位是餘數 餘數就是在整數的除法中,只有能整除與不能整除兩種情況。當不能整除時,就產生餘數,所以餘數問題在小學數學中非常重要。餘數有如下一些重要性質 a,b,c均為自然數 1 餘數小於除數。2 被除數 除數 商 餘數 除數 被除數 餘數 商 商 被除數 餘數 除數。3 ...

C邏輯運算子,C程式邏輯運算子

邏輯與2邊表示式的值中有一個是0,則結果是0邏輯或2邊表示式的值中有一個是1,則結果是1邏輯非的作用是將0變1,將非1變0 在c 中 結果bai只有兩種du 一種是 zhi0,一種是非零,所以當然a 5,a就是0,相dao當於專 是與否,的話只有當兩個屬變數都不為零是 結果才為1,其他情況結果為0,...