最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c語言中的移位運算符

 更新時間:2021年05月11日 11:32:36   作者:北川jug  
這篇文章主要介紹了c語言中的移位運算符,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

移位運算符在程序設(shè)計中,是位操作運算符的一種。移位運算符可以在二進制的基礎(chǔ)上對數(shù)字進行平移。

c語言中提供了兩種移位運算符:

左移運算符:<<
右移運算符:>>

左移運算符(<<)

int main(void)
{
	int a = 4;
	//把a的二進制位向左移動1位
	int b = a << 1;
	printf("b = %d", b);
	return 0;
}

在32位操作系統(tǒng)中,int類型占4個字節(jié),1個字節(jié)有8bit,所以變量a在內(nèi)存中占32個比特位。

將4賦值給變量a,a中存放的是4的二進制形式。

在這里插入圖片描述

將a向左移動一位

在這里插入圖片描述

最高位的0丟棄,末位補0

在這里插入圖片描述

可以看到a左移一位后的結(jié)果是1000,轉(zhuǎn)換成10進制就是8,所以打印b的結(jié)果就是8。

在這里插入圖片描述

右移運算符(>>)

int main(void)
{
	int a = 10;
	//把a的二進制位向右移動1位
	int b = a >> 1;
	printf("b = %d", b);
	return 0;
}

把10賦值給變量a,將10表示成二進制形式

在這里插入圖片描述

將10向右移動一位,最低位的0丟棄

在這里插入圖片描述

最高位補0

在這里插入圖片描述

最后的結(jié)果轉(zhuǎn)換成10進制就是5

在這里插入圖片描述

我們可以看到最后打印b的結(jié)果確實是5。

這里需要注意的是,右移分為算數(shù)右移和邏輯右移

算數(shù)右移: 右邊丟棄,左邊補原符號位
邏輯右移: 右邊丟棄,左邊補0
內(nèi)存中存放二進制序列的時候,最高位是0表示正數(shù),最高位是1表示負數(shù)。
因為10是正數(shù),所以無論是算數(shù)右移還是邏輯右移,最高位都是補0。那么這里的右移運算到底是算數(shù)右移還是邏輯右移呢?
整數(shù)的二進制表示形式有三種:原碼、反碼、補碼
原碼:直接根據(jù)數(shù)值寫出的二進制序列
反碼:原碼的符號位不變,其他位按位取反
補碼:反碼加1

計算機內(nèi)存數(shù)值存儲方式是補碼

int main(void)
{
	int a = -1;
	//把a的二進制位向右移動1位
	int b = a >> 1;
	printf("b = %d", b);
	return 0;
}

以-1為例

-1的原碼:

在這里插入圖片描述

-1的反碼:

在這里插入圖片描述

-1的補碼:

在這里插入圖片描述

因為計算機中存儲的是補碼,將-1右移1位,最低位的1舍棄

在這里插入圖片描述

先來看b的打印結(jié)果

在這里插入圖片描述

b的值為-1,說明最高位補的是1,此時進行的是算數(shù)右移。
需要注意的是,雖然a進行了右移操作,但是a的值是不發(fā)生改變的,我們可以將a也打印出來

int main(void)
{
	int a = 10;
	//把a的二進制位向右移動1位
	int b = a >> 1;
	printf("a = %d\n", a);
	printf("b = %d", b);
	return 0;
}

在這里插入圖片描述

a的結(jié)果仍然是10。

int a = 10;
int b = a + 1;

和上面的代碼是一樣的,在進行移位運算的時候,移位對象的值并不會發(fā)生改變

到此這篇關(guān)于c語言中的移位運算符的文章就介紹到這了,更多相關(guān)c語言 移位運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++通過COM接口操作PPT

    C++通過COM接口操作PPT

    這篇文章主要為大家詳細介紹了C++通過COM接口操作PPT的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 淺談C++ 緩沖區(qū)(buffer)的使用

    淺談C++ 緩沖區(qū)(buffer)的使用

    緩沖區(qū)是用來存放流中的數(shù)據(jù),本文詳細的介紹了C++ 緩沖區(qū)(buffer)的使用,感興趣的小伙伴們可以參考一下
    2021-06-06
  • .h和.cpp文件的區(qū)別(zt)詳細介紹

    .h和.cpp文件的區(qū)別(zt)詳細介紹

    特別是對源文件和頭文件的概念,需要深入對它了解,本文將詳細介紹,需要了解的朋友可以參考下
    2012-11-11
  • Clion配置opencv開發(fā)環(huán)境的詳細過程

    Clion配置opencv開發(fā)環(huán)境的詳細過程

    這篇文章主要介紹了Clion配置opencv開發(fā)環(huán)境的詳細過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考的下
    2022-04-04
  • vscode+qt5+cmake編譯調(diào)試過程解析

    vscode+qt5+cmake編譯調(diào)試過程解析

    這篇文章主要介紹了vscode+qt5+cmake編譯調(diào)試過程解析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C++實現(xiàn)簡易反彈小球游戲的示例代碼

    C++實現(xiàn)簡易反彈小球游戲的示例代碼

    我們利用printf 函數(shù)實現(xiàn)一個在屏幕上彈跳的小球。彈跳的小球游戲比較簡單、容易入門,也是反彈球消磚塊、接金幣、臺球等很多游戲的基礎(chǔ),感興趣的可以了解一下
    2022-10-10
  • C++中int類型按字節(jié)打印輸出的方法

    C++中int類型按字節(jié)打印輸出的方法

    這篇文章主要給大家介紹了關(guān)于C++中int類型按字節(jié)打印輸出的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Qt串口通信開發(fā)之QSerialPort模塊詳細使用方法與實例

    Qt串口通信開發(fā)之QSerialPort模塊詳細使用方法與實例

    這篇文章主要介紹了Qt串口通信開發(fā)之QSerialPort模塊詳細使用方法與實例,需要的朋友可以參考下
    2020-03-03
  • C語言之實現(xiàn)單鏈表指定結(jié)點的插入方式

    C語言之實現(xiàn)單鏈表指定結(jié)點的插入方式

    這篇文章主要介紹了C語言之實現(xiàn)單鏈表指定結(jié)點的插入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++ vector使用的一些注意事項

    C++ vector使用的一些注意事項

    這篇文章主要給大家介紹了關(guān)于C++ vector使用的一些注意事項,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論

普兰店市| 宁河县| 广德县| 宝山区| 皋兰县| 宁都县| 安塞县| 天津市| 诏安县| 信阳市| 垫江县| 红原县| 丽江市| 潼南县| 福贡县| 喜德县| 都安| 大石桥市| 交城县| 芮城县| 阿图什市| 富蕴县| 时尚| 鹤山市| 东港市| 九寨沟县| 闸北区| 湟源县| 湖北省| 邢台市| 社旗县| 平昌县| 灵丘县| 九龙县| 志丹县| 临汾市| 灵璧县| 麻江县| 白城市| 深泽县| 巴马|