關於學習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
- Java中按位取反運算子Java
- 取反!和按位取反~的區別
- !和~的區別(邏輯取反和按位取反)
- Java中的按位取反運算子,哪位能詳解一下?Java
- ~ 按位取反運算解析
- java學習中不懂的問題Java
- C# ~按位取反運算子C#
- 按位取反運計算方法
- 關於EJB的學習曲線的問題
- java中關於Map的九大問題Java
- 關於oracle中blob欄位的錄入問題Oracle
- 關於學習JAVA的問題!各位老大指點一下!Java
- C++ 關於static variables的學習中遇到的問題總結C++
- 學習Java中遇到的繼承問題Java繼承
- 關於原始碼的學習的一些問題原始碼
- 對十進位制數字的按位輸出,取反,並求其位數
- 關於字串中取相同的字元問題(小學題)字串字元
- 解答關於學習前端的一些問題前端
- Java中關於二分查詢的問題Java
- 關於java的“原子操作”問題Java
- 剛學java,關於介面的問題Java
- 關於機器視覺學習路線的問題?視覺
- 關於Java中分層中遇到的一些問題Java
- Java中關於String型別的10個問題Java型別
- java web中關於修改xml後讀取值的問題JavaWebXML
- Leetcode刷題中關於java的一些小問題LeetCodeJava
- Java 16進位制字串 取反Java字串
- 一個關於Java Excel的問題JavaExcel
- 關於C++&Java中命令列編譯的問題 (轉)C++Java命令列編譯
- weex學習中遇到的問題
- hive學習中遇到的問題Hive
- 關於工作中遇到的問題
- 關於cuda中的函式問題函式
- 關於 iOS 10 中 ATS 的問題iOS
- 關於struts中html:errors/的問題HTMLError
- 關於DDD學習過程中的一些疑問
- 學習中遇到的javabean中的scope問題JavaBean