A. c語言的左移運算符
為什麼計算出來的數據了
二進制 1111 1110
1111 1101
1111 1011
估計樓主你的這些數據應該是p1的,而temp的值是
二進制 0000 0001
0000 0010
0000 0100
注:
~temp只是求反並不改變temp本身的值,
對temp向高位移,低位是補0的而不會把前面的1換到後面來,
B. C語言中左移
tempbyte <<= 1;
即
tempbyte = tempbyte << 1;
你不會不知道 a += 1; 表示什麼吧.
C. C語言按位左移運算規則
C語言中按位左移的運算符為<<,其規則如下:
對於操作a<<n,
1 按照二進制值每位向高位(書寫上是向左)移動n位;
2 最高位(最左邊的)n位捨去;
3 最低位(最右邊)填加n個0.
簡單起見,用char型舉例如下:
例一
0x12 << 3 =>
B00010010 << 3 =>
B10010 000(這里最高位的三個0被捨去,其它依次左移,最低位補三個0) =>
0x90
即0x12 << 3 = 0x90
例二
0x9E << 2 =>
B10011110 << 2 =>
B01111000 (最高位10捨去,最低位補兩個0)=>
0x78
可以編寫如下程序驗證:
#include<stdio.h>
voidcheck(chara,intn)
{
printf("0x%hhx<<%d=0x%hhx ",a,n,a<<n);
}
intmain()
{
check(0x12,3);
check(0x9e,2);
return0;
}
其運行結果為
0x12<<3=0x90
0x9e<<2=0x78
可以看到與我們計算結果是相符的。
D. C語言中的左移和右移
左移就是把二進制數向左移動,右邊補0,0的二進制全是0,左移之後右邊再補0,移5和移6沒區別
<<後面的數字表示移多少位
E. C語言左移
左移就是把二進制數向左移動,右邊補0,0的二進制全是0,左移之後右邊再補0,移5和移6沒區別
<<後面的數字表示移多少位