網站首頁 編程語言 正文
文章面向對象:對原理和編程不大有興趣,只是需要用python實現一些運算功能的非計算機學生或從業者。大佬慎看防止血壓拉高
運算代碼
x=~x&0xFF
num是一個不大于255的十進制正數(負數的我不需要,所以我也沒研究)
計算結果也是十進制的數
&右邊的0xFF會決定計算結果的比特位。如果要得到正確的計算結果,兩邊的數據比特位應該相同
例如1000對應的十六進制是0xFC17,16比特位的,這時候求反就應該改成
x=~x&0xFFFF
實例說明
例如求58的反:
當x大于255時,想要得到正確的數字,就要修改一下代碼
把0xFF換成0xFFFF或者更高,取決于x這個數占用的比特位。
(C語言基礎會講的知識,數據精度問題)
總之就是&兩邊的比特位要對應
**如果&右邊保持為0xFF,但x大于了255,得到的結果則只有低位(如下圖)
**
而實際上1000取反應該得到的十六進制表示是 ‘0xFC 17’
把完整的16比特位的FC17截斷剩下17
(之所以這里用十六進制表示,是因為&右邊對應的是16進制,這樣看會更清楚。實際上取反運算是根據二進制表示運行的,那些也不重要,反正知道可以這樣算就OK啦!)
補充:Python的按位取反運算符的簡單解析
Python的按位取反運算符~的解釋是:
對數據的每個二進制位取反,即把1變為0,把0變為1。~x 類似于 -x-1。
如a =61= 0b0011 1101,按位取反后的結果是:0b1100 0010=194,
可是Python中運算結果并非如此,
輸出的~a的結果是:~a=62
這是怎么回事呢?
計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示“正”,用1表示“負”,而數值位,三種表示方法各不相同。
在計算機系統中,數值一律用補碼來表示和存儲。原因在于,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。
另外,求負整數的補碼,將其對應正數二進制原碼表示所有位取反(包括符號位,0變1,1變0)后加1
這里用括號來表示符號位,0表示正數,1表示負數。
a=61=(0)0b0011 1101,正數補碼
~a=(1)0b1100 0010,負數補碼,符號位為1表示這個代表一個負數,我們要知道其表示的數值。
對應負數原碼到補碼的轉換過程:
(1)數值部分先減一:0b1100 0001
(2)數值部分取反:0b0011 1110,數值部分62
加上符號則~a =-62= (1)0b0011 1110,負數原碼
總結
原文鏈接:https://blog.csdn.net/yytkoukoutang/article/details/121297220
相關推薦
- 2023-01-01 matplotlib基本圖形繪制操作實例_python
- 2022-08-22 C++示例詳解Prim算法與優先隊列_C 語言
- 2023-04-07 C#?PadLeft、PadRight用法詳解_C#教程
- 2023-02-15 Android音視頻開發只硬件解碼組件MediaCodec講解_Android
- 2022-09-16 利用Python統計Jira數據并可視化_python
- 2022-01-18 獲取當前的日期 格式為YYYY-MM-dd 和時間戳轉時間
- 2022-08-03 如何一鍵理清大型Python項目依賴樹_python
- 2022-06-12 一文教會你在sqlserver中創建表_MsSql
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支