C語言按位取反【~】詳解,含原碼反碼補碼的0基礎講解【原碼反碼補碼嚴格意義上來說屬于計算機組成原理的范疇,不過這也是學好編程初級階段的必修課】

目錄

概述【適合0基礎看的簡要描述】:

上述加粗下劃線的內容提取版:

從上述概述中提取的核心知識點,需背誦:

整數【包含整數,負整數和0】的原碼反碼補碼相互轉換的過程圖示:

過程詳細刨析:

運行結果展示:


概述【適合0基礎看的簡要描述】:

整型的表示方法:原碼,反碼,補碼
正整數的符號位為0,負整數的符號位為1
正整數的原碼=反碼=補碼;
負整數的原碼先寫出來,符號位不變,其他位按位取反就可以得到反碼,反碼+1即可得到補碼。
進行運算或者賦值時,輸入的都是十進制數,轉換成二進制即為該數的原碼,再轉換成補碼就可以進行賦值或運算了,賦值或運算結束后,將補碼轉換成原碼,最后將補碼轉換成十進制就是最終的結果了。

上述加粗下劃線的內容提取版:

十進制 -> 二進制源碼 -> 二進制補碼 -> 按位取反 -> 二進制原碼 -> 十進制


從上述概述中提取的核心知識點,需背誦:

按位取反:對一個數的二進制補碼進行取反。(0轉1,1轉0)。

原碼:在數值前面增加一位符號位,0表示正數,1表示負數。

反碼:正數的反碼與原碼相同;負數的反碼對其原碼逐位取反(符號位除外)。

補碼:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位+1。


整數【包含整數,負整數和0】的原碼反碼補碼相互轉換的過程圖示:


過程詳細刨析:

//按位取反【~】【cout函數默認整型是int,(由于int整型是占4個字節的,相當于32個bit位(不算符號位),所以二進制一共有32位數值位+最左邊的一位符號位【符號位若為0代表數的十進制是個非負數,符號位若為1代表數的十進制是個正數】)】
#include<iostream>
using namespace std;
int main() {cout << (~0) << endl;//0存儲在內存中:// 0b 0 00000000 00000000 00000000 00000000  【0的原碼=反碼=補碼】【從左往右數第一位是符號位】// 0b 0 00000000 00000000 00000000 00000000    【0的補碼】// ~0【0按位取反的過程:】 // 0b 1 11111111 11111111 11111111 11111111  0的補碼按位取反后的結果【從左往右數第一位是符號位,進行按位取反時,符號位也要取反】// 0b 1 11111111 11111111 11111111 11111110  補碼-1=反碼// 0b 1 00000000 00000000 00000000 00000001  反碼取反=原碼// 所以0的按位取反結果是-1//求一個數的相反數【(按位取反x)+1=(-x)】int a = 16;cout << (~a) + 1 << endl;// ~16【按位取反16的過程:(簡略寫:省略了一部分數值位,詳細的看上面0的按位取反)】// 0b 0 10000  16的原碼=反碼=補碼// 0b 1 01111  16的補碼按位取反=~16的補碼// 0b 1 01110  ~16的反碼// 0b 1 10001  ~16的原碼// ~16=-17// (~16+1)=-16return 0;
}

運行結果展示:

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

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

相關文章

StarSpider 星蛛 爬蟲 Java框架 可以實現 lazy爬取 實現 HTML 文件的編譯,子標簽緩存等操作

StarSpider 星蛛 爬蟲 Java框架 開源技術欄 StarSpider 能夠實現 針對 HTML XSS SQL 數學表達式等雜亂數據的 爬取 解析 提取 需求&#xff01; 目錄 文章目錄 StarSpider 星蛛 爬蟲 Java框架目錄介紹如何獲取&#xff1f;maven配置 架構是什么樣的&#xff1f;結果對象的類…

【系統架構設計師】分布式數據庫透明性

目錄 1. 說明2. 分片透明3. 復制透明4. 位置透明5. 邏輯透明&#xff08;局部數據模型透明&#xff09;6.例題6.1 例題1 1. 說明 1.在分布式數據庫系統中&#xff0c;分片透明、復制透明、位置透明和邏輯透明是幾個重要的基本概念。2.分片透明、復制透明、位置透明和邏輯透明是…

音頻進階學習十一——離散傅里葉級數DFS

文章目錄 前言一、傅里葉級數1.定義2.周期信號序列3.表達式DFSIDFS參數含義 4.DFS公式解析1&#xff09;右邊解析 T T T、 f f f、 ω \omega ω的關系求和公式N的釋義求和公式K的釋義 e j ( ? 2 π k n N ) e^{j(\frac{-2\pi kn}{N})} ej(N?2πkn?)的釋義 ∑ n 0 N ? 1 e…

C++ Primer 成員訪問運算符

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

基礎入門-算法解密散列對稱非對稱字典碰撞前后端逆向MD5AESDESRSA

知識點&#xff1a; 0、算法類型-單向散列&對稱性&非對稱性 1、算法識別加解密-MD5&AES&DES&RSA 2、解密條件尋找-邏輯特征&源碼中&JS分析 應用場景&#xff1a; 1、發送數據的時候自動將數據加密發送&#xff08;只需加密即可&#xff09; 安全…

Qt修仙之路2-1 煉丹初成

widget.cpp #include "widget.h" #include<QDebug> //實現槽函數 void Widget::login1() {QString userusername_input->text();QString passpassword_input->text();//如果不勾選無法登入if(!check->isChecked()){qDebug()<<"xxx"&…

【R語言】環境空間

一、環境空間的特點 環境空間是一種特殊類型的變量&#xff0c;它可以像其它變量一樣被分配和操作&#xff0c;還可以以參數的形式傳遞給函數。 R語言中環境空間具有如下3個特點&#xff1a; 1、對象名稱唯一性 此特點指的是在不同的環境空間中可以有同名的變量出現&#x…

【redis】緩存設計規范

本文是 Redis 鍵值設計的 14 個核心規范與最佳實踐&#xff0c;按重要程度分層說明&#xff1a; 一、通用數據類型選擇 這里我們先給出常規的選擇路徑圖。 以下是對每個步驟的分析&#xff1a; 是否需要排序&#xff1f;&#xff1a; zset&#xff08;有序集合&#xff09;用…

2021 年 9 月青少年軟編等考 C 語言五級真題解析

目錄 T1. 問題求解思路分析T2. 抓牛思路分析T3. 交易市場思路分析T4. 泳池思路分析T1. 問題求解 給定一個正整數 N N N,求最小的 M M M 滿足比 N N N 大且 M M M 與 N N N 的二進制表示中有相同數目的 1 1 1。 舉個例子,假如給定 N N N 為 78 78 78,二進制表示為 …

Windows 中學習Docker環境準備2、Docker Desktop中安裝ubuntu

Windows 中學習Docker環境準備1、Win11安裝Docker Desktop Windows 中學習Docker環境準備2、Docker Desktop中安裝ubuntu Windows 中學習Docker環境準備3、在Ubuntu中安裝Docker 需要更多Docker學習視頻和資料&#xff0c;請文末聯系 一、安裝 Docker Desktop 下載 Docker…

LabVIEW2025中文版軟件安裝包、工具包、安裝教程下載

下載鏈接&#xff1a;LabVIEW及工具包大全-三易電子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安裝圖文教程》 1、解壓后&#xff0c;雙擊install.exe安裝 2、選中“我接受上述2條許可協議”&#xff0c;點擊下一步 3、點擊下一步&#xff0c;安裝NI Packa…

PHP ODBC:深入探索數據庫連接與交互技術

PHP ODBC:深入探索數據庫連接與交互技術 引言 PHP作為一種廣泛使用的服務器端腳本語言,在Web開發中扮演著重要角色。在數據處理方面,PHP與數據庫的交互是其核心功能之一。ODBC(Open Database Connectivity)作為一種標準數據庫訪問接口,允許PHP應用程序與各種數據庫系統…

AUTOSAR汽車電子嵌入式編程精講300篇-基于FPGA的CAN FD汽車總線數據交互系統設計

目錄 前言 汽車總線以及發展趨勢 汽車總線技術 汽車總線發展趨勢 CAN FD總線國內外研究現狀 2 系統方案及CAN FD協議分析 2.1系統控制方案設計 2.2 CAN FD總線幀結構分析 2.2.1數據幀分析 2.2.2遠程幀分析 2.2.3過載幀分析 2.2.4錯誤幀分析 2.2.5幀間隔分析 2.3位…

BUU17 [RoarCTF 2019]Easy Calc1

自用 源代碼 $(#calc).submit(function(){$.ajax({url:"calc.php?num"encodeURIComponent($("#content").val()),type:GET,success:function(data){$("#result").html(<div class"alert alert-success"><strong>答案:&l…

5. k8s二進制集群之ETCD集群部署

下載etcd安裝包創建etcd配置文件準備證書文件和etcd存儲目錄ETCD證書文件安裝(分別對應指定節點)創建證書服務的配置文件啟動etcd集群驗證etcd集群狀態繼續上一篇文章《k8s二進制集群之ETCD集群證書生成》下面介紹一下etcd證書生成配置。 下載etcd安裝包 https://github.com…

Java并發編程筆記

Java并發基礎知識補全 啟動 啟動線程的方式只有&#xff1a; 1、X extends Thread;&#xff0c;然后X.start 2、X implements Runnable&#xff1b;然后交給Thread運行 線程的狀態 Java中線程的狀態分為6種&#xff1a; 1. 初始(NEW)&#xff1a;新創建了一個線程對象&…

使用多模態大語言模型進行深度學習的圖像、文本和語音數據增強

在過去的五年里&#xff0c;研究方向已從傳統的機器學習&#xff08;ML&#xff09;和深度學習&#xff08;DL&#xff09;方法轉向利用大語言模型&#xff08;LLMs&#xff09;&#xff0c;包括多模態方法&#xff0c;用于數據增強&#xff0c;以提高泛化能力&#xff0c;并在…

Windows Docker筆記-Docker拉取鏡像

通過在前面的章節《安裝docker》中&#xff0c;了解并安裝成功了Docker&#xff0c;本章講述如何使用Docker拉取鏡像。 使用Docker&#xff0c;主要是想要創建并運行Docker容器&#xff0c;而容器又要根據Docker鏡像來創建&#xff0c;那么首當其沖&#xff0c;必須要先有一個…

YOLOv11-ultralytics-8.3.67部分代碼閱讀筆記-autobatch.py

autobatch.py ultralytics\utils\autobatch.py 目錄 autobatch.py 1.所需的庫和模塊 2.def check_train_batch_size(model, imgsz640, ampTrue, batch-1, max_num_obj1): 3.def autobatch(model, imgsz640, fraction0.60, batch_sizeDEFAULT_CFG.batch, max_num_obj1): …

【文件上傳、秒傳、分片上傳、斷點續傳、重傳】

文章目錄 獲取文件對象文件上傳&#xff08;秒傳、分片上傳、斷點續傳、重傳&#xff09;優化 獲取文件對象 input標簽的onchange方法接收到的參數就是用戶上傳的所有文件 <html lang"en"><head><title>文件上傳</title><style>#inp…