關於學習java中的按位取反(~)的問題
之前不知道按位取反到底是怎麼計算的
百度谷歌的半天 也沒有什麼具體的計算防暑 後來自己琢磨了一會兒 發現了一點按位取反的技巧 在此分享一下
負數的取反 就是在原碼的基礎上取反碼 然後在取補碼(補碼=反碼+1)當反碼的最後一位數已經為1的時候 補碼再+1後就應該向前進一位
例如十進位制數: -6 -6在java中的原碼為10000000 00000000 00000000 00000110 其反碼為11111111 11111111 11111111 11111001
所以-6的補碼就是11111111 11111111 11111111 11111010 再將補碼取反就是~(-6)的二進位制數:00000000 00000000 00000000 00000101 轉換為10進位制就是5.
正數的原碼=補碼=反碼
正數的按位取反其實可以參照負數
其計算方式可以按負數的逆思路直接推出
比如說一個十進位制數:5
5的原碼、反碼、補碼全部都是00000000 00000000 00000000 00000101
那麼先將5的二進位制數取反,並得到:11111111 11111111 11111111 11111010(把它看做是某個數的補碼)
然後再將得到某個數的補碼(姑且稱之為補碼吧)-1
就得到反碼:11111111 11111111 11111111 11111001(因為補碼最後一位數為0 所以往前一位“借數”,所以最後一位數為1)
最後將反碼譯為原碼:10000000 00000000 00000000 00000110 所以~(5)就為-6.
注:以上純屬本人在探索過程中的個人理解,如果錯誤,希望大神指出!謝謝!
相關文章
- Java中按位取反運算子Java
- C# ~按位取反運算子C#
- java學習中不懂的問題Java
- 關於Java中進位制轉換以及位運算問題Java
- 學習Java中遇到的繼承問題Java繼承
- Leetcode刷題中關於java的一些小問題LeetCodeJava
- 對十進位制數字的按位輸出,取反,並求其位數
- Java中關於二分查詢的問題Java
- 位運算子之---按位取反運算子(簡單易懂)
- 關於Java中分層中遇到的一些問題Java
- 關於機器視覺學習路線的問題?視覺
- Java 16進位制字串 取反Java字串
- 關於工作中遇到的問題
- 關於cuda中的函式問題函式
- (求教)關於js函式按值、引用傳遞的問題JS函式
- 位操作(取反)
- loadrunner學習中遇到的問題
- weex學習中遇到的問題
- 【學習筆記】關於Freemark程式碼輸出值的問題筆記
- #關於學Web時遇上的奇葩問題Web
- 關於python中填充缺失值的問題Python
- 關於setInterval和setTImeout中的this指向問題
- 關於 mysql 中的 rand () 查詢問題MySql
- java學習中問題與解決方式Java
- 【學習】分享幾個學習中的小問題
- 關於this指向的問題
- 關於Quartus的start按鈕灰色無法下載的問題的解決
- [BUG反饋]關於ot模型中的時間型別欄位bug問題模型型別
- 遷移學習中的BN問題遷移學習
- 關於32位程式在64位系統下執行中需要注意的重定向問題
- 關於對於Java中Entity以及VO,以及DTO中Request物件序列化的學習Java物件
- Java春招面試複習:有關於Java Map,應該掌握的8個問題Java面試
- [20211018]運維中關於history的問題.txt運維
- Elasticsearch中關於transform的一個問題分析ElasticsearchORM
- SpringBoot中關於Mybatis使用的三個問題Spring BootMyBatis
- pl/sql developer中關於TIMESTAMP顯示格式的疑問和學習SQLDeveloper
- 關於HTTP的學習HTTP
- 關於Fragement的學習
- 關於SQLMAP的學習SQL