位運算符——原碼-反碼-補碼(重點 難點)【二進制在運算中的說明】

如果連二進制的知識還沒搞懂, 那么計算機最基礎的你都還沒明白, 所以2進制對我們程序員來說, 是必會, 必學的知識

二進制在運算中的說明:

一.? 二進制是逢2進位的進位制, 0,1是基本算符

二.? 現代的電子計算機技術全部采用的是二進制, 因為它只使用0, 1兩個數字符號,非常簡單方便, 易于用電子方式實現。計算機內部處理的信息, 都是采用二進制數來表示的, 二進制 (Binary) 數用0和1兩個數字及其組合來表示任何數。進位規則是"逢2進1", 數字1在不同的位上代表不同的值, 按從右至左的次序, 這個值以二倍遞增.

  1. 1. 請看下面代碼, 回答a, b, c, d, e結果是多少?

        int a = 1>>2; //向右位移2位int b = -1>>2;int c = 1<<2;int d = -1<<2;int e = 3>>>2;//算術右移
//        a,b,c,d,e結果是多少?System.out.println("a ="+a);System.out.println("b ="+b);System.out.println("c ="+c);System.out.println("d ="+d);System.out.println("e ="+e);
  • 請回答在java中, 下面的表達式運算結果是: (位操作), 練習題

~2=? //按位取反

2&3=? // 2按位與3

2|3=? //

~-5=?

13&7=?

5|4=?

-3^3=? //按位異或

原碼-反碼-補碼(重點 難點)

這些是計算機底層運行的最重要的機制, 很多程序員他們舍本逐末, 天天都在學框架, 然后學所謂的底層, 連最基本的都沒搞懂, 你說他能行嘛

網上對原碼, 反碼, 補碼的解釋過于復雜, 我這里精簡幾句話:(背下來), 這里背下來不是我規定的也不是老師規定的, 是計算機的設計者馮諾伊曼早就規定好的, 我們必須背下來

對于有符號的而言:

  1. 1.

    二進制的最高位是符號位: 0 表示正數, 1 表示負數 (口訣: 0->0 1-> -)

    符號位就是代表正或負 0正數, 1負數

  2. 2.

    正數的原碼, 反碼, 補碼都一樣 (三碼合一)

  3. 3.

    負數的反碼 = 它的原碼符號位不變, 其它位取反 (0->1,1->0)

    什么是其它取反就是 0變1, 1變0

  4. 4.

    負數的補碼 = 它的反碼 +1, 負數的反碼 = 負數的補碼 - 1

  5. 5.

    0 的反碼, 補碼都是 0

  6. 6.

    java沒有無符號數, 換言之, java中的數都是有符號的

  7. 7.

    在計算機位運算的時候, 都是以補碼的方式來運算的.

    他為什么要以補碼的方式來運算呢? : 因為補碼它可以解決正數和負數, 它把正數和負數用補碼統一起來了, 所以設計者設計這種原碼反碼補碼的規則特別的科學

  8. 8.

    當我們看運算結果的時候, 要看它的原碼 (重點)

以上這些是一定一定要背下來的!!! 你如果背不住怎么辦呢? 那你就多背幾遍, 這個是一定要背下來的, 這個背不下來,我告訴大家你當程序員說實話很失敗的.

按位運算符

  • java中有7個位運算符(&, |, ^, ~, >>, <<和>>>)

分別是 按位與&, 按位或, 按位異或^, 按位取反~, 它們的運算規則是:

按位與 & :?

? ? ? ? ? ? ? ? 兩位全為1, 結果為1, 否則為0

舉例:

? ? ? ? ? ? ? ? 比如我兩個二進制 10010001 , 11110010 = 10010000

按位或 | :

? ? ? ? ? ? ? ? 兩位有一個為1, 結果為1, 否則為0

按位異或 ^ :

? ? ? ? ? ? ? ? 兩位一個為0, 一個為1, 結果為1, 否則為0

按位取反 ~ :

? ? ? ? ? ? ? ? 0 -> 1 , 1 -> 0

比如: 2&3=? -2=? ~~2=? 2|3=? 2^3=?

//        位運算
//        1.先得到 2的補碼 => 2的原碼  首先2是int(4個字節) 一個字節為8位數 00000000 00000000 00000000 00000010
//          2的補碼 00000000 00000000 00000000 00000010
//        2.3的補碼 3的原碼 00000000 00000000 00000000 00000011
//          3的補碼 00000000 00000000 00000000 00000011
//        3.按位&
//          00000000 00000000 00000000 00000010
//          00000000 00000000 00000000 00000011
//          00000000 00000000 00000000 00000010 & 運算后的補碼
//          運算后的原碼 也是 00000000 00000000 00000000 00000010
//          結果就是 2System.out.println(2&3); //2//        推導
//        1. 先得到 -2 的原碼 10000000 00000000 00000000 00000010
//        2. -2的反碼  1111111 11111111 11111111 11111101
//        3. -2的補碼  1111111 11111111 11111111 11111110
//        4. ~-2操作 00000000 00000000 00000000 00000001 運算后的補碼
//        5. 運算后的原碼 就是  00000000 00000000 00000000 00000001 => 1System.out.println(~-2); //1//        推導
//        1. 得到2的補碼 00000000 00000000 00000000 00000010
//        2. ~2操作 按位取反 11111111 11111111 11111111 11111101 運算后的補碼
//        3. 運算后的反碼 11111111 11111111 11111111 11111100
//        3. 運算后的原碼 10000000 00000000 00000000 00000011 => -3System.out.println(~2); //-3

移位操作符

  • 還有三個運算符 >> , << 和 >>>, 運算規則:

  1. 1.

    算數右移 >>:? 低位溢出, 符號位不變, 并用符號位補溢出的高位

  2. 2.

    算數左移 <<: 符號位不變,低位補0

  3. 3.

    >>>: 邏輯右移也叫無符號右移, 運算規則是: 低位溢出, 高位補0

  4. 4.

    特別說明: 沒有 <<< 符號

  • 應用案例 BitOperator

        int a = 1 >> 2; //1 => 000000001 本質 1 / 2 / 2 =0int c = 1 << 2; //1 => 00000001 => 00000100 本質 1 * 2 * 2 = 4int d = 4 << 3; //4 => 本質 4 * 2 * 2 * 2 = 24int e = 15 >> 2; // 本質  15 / 2 / 2 = 3System.out.println(a); //0System.out.println(c); //4System.out.println(d); //24System.out.println(e); //3

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17436.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx添加訪問密碼

安裝密碼生成工具 yum -y install httpd-tools生成用戶和密碼文件 [rootlocalhost nginx]# htpasswd -c /usr/local/nginx/password web01 New password: 這里輸入密碼 Re-type new password: 再次輸入密碼 Adding password for user web01參數說明&#xff1a; web01 是自定…

文章解讀與仿真程序復現思路——電力自動化設備EI\CSCD\北大核心《計及液態空氣儲能與綜合需求響應的綜合能源系統低碳經濟調度》

本專欄欄目提供文章與程序復現思路&#xff0c;具體已有的論文與論文源程序可翻閱本博主免費的專欄欄目《論文與完整程序》 論文與完整源程序_電網論文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 電網論文源程序-CSDN博客電網論文源…

HTML靜態網頁成品作業(HTML+CSS)——游戲陰陽師介紹網頁(4個頁面)

&#x1f389;不定期分享源碼&#xff0c;關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 &#x1f3f7;?本套采用HTMLCSS&#xff0c;未使用Javacsript代碼&#xff0c;共有4個頁面。 二、作品演示 三、代…

Android ANR簡介

ANR&#xff08;App not respond&#xff09;是Android定義的一種穩定性問題類型&#xff1b;系統發出關鍵消息&#xff0c;同時發出此消息的超時消息。處理邏輯有兩種情況&#xff1a; 關鍵消息被執行&#xff0c;超時消息被清除&#xff1b;ANR不會發生超時消息被執行&#x…

JAVASE2

封裝的步驟&#xff1a; 1、所有屬性私有化&#xff0c;使用private關鍵字進行修飾&#xff0c;private表示私有的&#xff0c;修飾的所有數據只能在本類中訪問 2、對外提供簡單入口&#xff1a;比如說被private修飾的成員變量&#xff0c;在其他類中只能通過getXxx/setXxx方法…

網絡風暴:揭秘DDoS攻擊的幕后黑手

在數字化時代的浪潮中&#xff0c;網絡攻擊已成為一種新型的戰爭手段。其中&#xff0c;分布式拒絕服務攻擊&#xff08;DDoS&#xff09;以其強大的破壞力和隱蔽性&#xff0c;成為網絡安全領域的一大挑戰。DDoS攻擊通過發動海量的惡意流量&#xff0c;如同狂風暴雨般席卷目標…

如何設置遠程桌面連接?

遠程桌面連接是一種方便快捷的遠程訪問工具&#xff0c;可以幫助用戶在不同地區間快速組建局域網&#xff0c;解決復雜網絡環境下的遠程連接問題。本文將針對使用遠程桌面連接的操作步驟進行詳細介紹&#xff0c;以幫助大家快速上手。 步驟一&#xff1a;下載并安裝遠程桌面連接…

芯片絲印反查

芯片絲印反查網 - IC芯片絲印,IC芯片代碼,IC芯片印字,IC芯片頂標,SMD code,marking code,top mark芯查查-電子信息產業數據引擎 ic/芯片絲印反查網-芯查查

各種情況下的線纜大小選擇

開口線鼻子和導線對應大小 開口銅鼻子對應線徑大小 變壓器容量對應高壓側電流大小 開關電流線纜功率對照表 家庭/工業最常用電線銅線電流承載功率 電工常用名詞對應符號 導線面積承載的安全載流量及允許負荷對照表 漏電保護器選擇參考表 電動機功率換算電流 電機功…

Python正則模塊re方法介紹

Python 的 re 模塊提供了多種方法來處理正則表達式。以下是一些常用的方法及其功能介紹&#xff1a; 1. re.match() 在字符串的開始位置進行匹配。 import repattern r\d string "123abc456"match re.match(pattern, string) if match:print(f"匹配的字符…

代碼隨想錄——最大二叉樹(Leetcode654)

題目鏈接 遞歸 二叉樹 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode rig…

.NET 輕量級、高效任務調度器:ScheduleTask

前言 至于任務調度這個基礎功能&#xff0c;重要性不言而喻&#xff0c;大多數業務系統都會用到,世面上有很多成熟的三方庫比如Quartz&#xff0c;Hangfire&#xff0c;Coravel 這里我們不討論三方的庫如何使用 而是從0開始自己制作一個簡易的任務調度,如果只是到分鐘級別的粒…

全能集成開發平臺Team·IDE

三甲醫院的床位太難等了。反正也是小手術&#xff0c;老蘇周五在附近找了家二甲醫院&#xff0c;幸運的是&#xff0c;門診迅速為我開具了入院證。周六早晨就接受了手術&#xff0c;周日掛了一天水&#xff0c;周一下午就出院了。準備在家先休息兩天。 2~4 周之后把支架取出來…

阿里云海外視頻安全的DRM加密

隨著科技的進步&#xff0c;視頻以直播或錄播的形式陸續開展海外市場&#xff0c;從而也衍生出內容安全的問題&#xff0c;阿里云在這方面提供了完善的內容安全保護機制&#xff0c;適用于不同的場景&#xff0c;如在視頻安全提供DRM加 由圖可以了解到阿里云保護直播安全的方法…

Java的 File類

Java的 File類 File類&#xff1a;相關方法&#xff1a;構造方法&#xff1a;創建文件/目錄&#xff1a;重命名&#xff1a;判斷&#xff1a;獲取&#xff1a;刪除&#xff1a; 路徑&#xff1a;相關操作&#xff1a;操作1&#xff1a;目錄存在&#xff1a;一層級的目錄不存在:…

c++模板與泛型編程

模板的作用&#xff1a;通過使用模板降低重復代碼的編寫&#xff0c;把已經寫好的代碼作用最大化&#xff1b; 模板的概念 1.模板與泛型編程&#xff08;目的時只進行邏輯操作&#xff0c;不需要考慮數據類型&#xff0c;將類型作為參數傳遞&#xff09; 模板是實現代碼重用…

【軟件設計師】程序語言

1.程序設計語言基本概念 1.1 低級語言與高級語言 低級語言&#xff1a;機器語言和匯編語言稱為低級語言 機器語言指0.&#xff0c;1組成的機器指令序列 匯編語言指用符號表示指令的語言&#xff0c;如MOV AX&#xff0c;2 高級語言&#xff1a;從人類的邏輯角度出發&#xff0…

numpy-mkl的下載地址

不要使用pip3直接在終端安裝&#xff0c;因為pip3默安裝的是numpy&#xff0c;而不是numpymkl。 采用在第三方庫中手動下載后&#xff0c;再安裝的方式。 第三方庫網址&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 如果不能進入就可以選擇去git里面&#x…

(三)MobaXterm、VSCode、Pycharm ssh連接服務器并使用

背景&#xff1a;根據前兩篇文章操作完成后&#xff0c; 手把手教學&#xff0c;一站式安裝ubuntu及配置服務器-CSDN博客 手把手教學&#xff0c;一站式教你實現服務器&#xff08;Ubuntu&#xff09;Anaconda多用戶共享-CSDN博客 課題組成員每人都有自己的帳號了&#xff0…

嵌入式0基礎開始學習 Ⅲ Linux基礎(3)正則表達式

0.問題引入 字符串是計算機應用中最為廣泛的處理對象之一(瀏覽器&#xff0c;xml文件&#xff0c;代碼) 并且字符串的組合規則形式各種各樣&#xff0c;如&#xff1a; 數字字符串 email字符串 IP地址字符串 網址 …