欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于<<左移符號,有個搞不懂的地方,請大家指點一下,謝謝!
[打印本頁]
作者:
tanghao8887
時間:
2018-10-27 12:31
標題:
關于<<左移符號,有個搞不懂的地方,請大家指點一下,謝謝!
void main ()
{
P2=(0xfe<<1);
}
首先,0xfe化成二進制1111 1110,于是左移一位=11111101,那么,就應該是P2.1口的發光二極管亮啊,為什么左移了一位,實驗結果會是P2.0口和P2.1口的發光二極管都同時點亮,搞不懂請大家指點迷津,謝謝!
作者:
wulin
時間:
2018-10-28 08:16
0xfe化成二進制1111 1110,于是左移一位=11111100,最高位溢出,最低位補0。使用循環左移一位才能把最高位補到最低位。P2=_crol_(P2,1);
作者:
zdm
時間:
2018-10-28 10:43
可能是默認用0補上吧
作者:
JJJJ123
時間:
2018-10-28 10:50
0xfe化成二進制1111 1110,左移一位=11111100;
作者:
hhq1392010
時間:
2018-10-28 10:50
左移后不應該右邊置零嗎
作者:
wc411421
時間:
2018-10-28 16:26
移位分為邏輯左移,邏輯右移以及算數右移。
1、邏輯左移
左移n位,低n位補0,視數據類型的長度截斷移位之后的數據。如題主所描述的,0xfe為一個字節,用二進制表示為0b1111 1110,也就是8個比特,左移一位之后,最低位補0,數據長度為9個比特,用二進制表示為0b1 1111 1100,由于一個字節只能存儲八個比特,最高位溢出,最終移位的結果為0b1111 1100。
不同于右移,左移只有邏輯移位,沒有算數移位。
2、邏輯右移
數據右移,處于高位的比特會空出來,為保證數據長度一致,這就涉及到對空出來的比特位填充的問題。當始終填充0時,不考慮原始數據的最高位比特,該右移被稱為邏輯右移。
例如,0b1111 1110 ->邏輯右移1位->0b0111 1111
3、算數右移
和邏輯右移填充0不同,當原始數據的最高位為1時,填充位為1,當原始數據的最高位為0時,填充位為0,也就是填充位等于原始數據的最高位。
例如,0b1111 1110 ->算數右移->0b1111 1111
作者:
HC6800-ES-V2.0
時間:
2018-10-29 09:18
如果你是想只亮P21,那么,就必須是循環移位。
第一:加上頭文件:intrins.h
第二:使用這個頭文件中的循環移位函數:_crol_()向左(高位)移位和_cror_()向右(低位)移位函數。
這樣,就不會是<<或>>命令中用零填空了,而是以你已經有的數據進行循環移位。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1