欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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和C++混合編程問題

    C和C++混合編程問題

    這篇文章主要介紹了C和C++混合編程問題,需要的朋友可以參考下
    2015-10-10
  • C語言實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    C語言實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言中的三種循環(huán)語句

    C語言中的三種循環(huán)語句

    這篇文章主要介紹了C語言中的三種循環(huán)語句,在C語言中循環(huán)可分為3中,while循環(huán)、do - while循環(huán)、for 循環(huán)。下面小編就來為大家講解這三種循環(huán)語句,需要的朋友可以參考一下,希望對你有所幫助
    2021-10-10
  • C語言數(shù)據(jù)結(jié)構(gòu)經(jīng)典10大排序算法刨析

    C語言數(shù)據(jù)結(jié)構(gòu)經(jīng)典10大排序算法刨析

    這篇文章主要介紹了C語言中常用的10種排序算法及代碼實現(xiàn),開發(fā)中排序的應(yīng)用需要熟練的掌握,因為是基礎(chǔ)內(nèi)容,那C語言有哪些排序算法呢?本文小編就來詳細說說,需要的朋友可以參考一下
    2022-02-02
  • OpenCV實現(xiàn)圖像角點檢測

    OpenCV實現(xiàn)圖像角點檢測

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)圖像角點檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解c++中的 static 關(guān)鍵字及作用

    詳解c++中的 static 關(guān)鍵字及作用

    這篇文章主要介紹了c++中的 static 關(guān)鍵字,在我們?nèi)粘J褂眠^程中,static通常有兩個作用,具體內(nèi)容在文中給大家詳細介紹,需要的朋友可以參考下
    2020-02-02
  • Qt線程QThread開啟和安全退出的實現(xiàn)

    Qt線程QThread開啟和安全退出的實現(xiàn)

    本文主要介紹了Qt線程QThread開啟和安全退出的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • VSCode 配置C++開發(fā)環(huán)境的方法步驟

    VSCode 配置C++開發(fā)環(huán)境的方法步驟

    這篇文章主要介紹了VSCode 配置C++開發(fā)環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C++ API功能設(shè)計的實現(xiàn)

    C++ API功能設(shè)計的實現(xiàn)

    C++ API中看似很小的修改,都可能會影響到生成的對象和庫文件的二進制表示,如果客戶想替換共享庫使之工作,就不能簡單的替換庫文件了事,而往往需要重新編譯
    2022-08-08
  • C++獲取內(nèi)存使用情況小結(jié)

    C++獲取內(nèi)存使用情況小結(jié)

    在程序編程過程中,為了防止出現(xiàn)內(nèi)存泄漏情況出現(xiàn),需要持續(xù)關(guān)注內(nèi)存程序內(nèi)存占用情況,本文主要介紹了C++獲取內(nèi)存使用情況小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01

最新評論