关于 C语言的 按位取反 ~
生活随笔
收集整理的這篇文章主要介紹了
关于 C语言的 按位取反 ~
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、相關概念:
不管是正整數 還是 負整數在計算機中都是以 補碼的形式存在的;
取反:0變1,1變0 就叫做取反,取反 符號位也要改變;
反碼:符號位不變,其他位置0變1,1變0;
何為補碼? 如果有一個二進制位, 它的反碼 加1 就是 該二進制位的 補碼, 注意是 反碼 不是 取反。
2、 正整數的 反碼 和補碼 是其源碼本身;
負整數的 反碼 是源碼符號位不變,其他位0變1,1變0;補碼 是在反碼的基礎上再加1.
取反 是 在補碼的基礎上 取反;
3、 正整數的取反過程: 例如 7 (1字節 8位 首位位符號位)
源碼: 0000 0111
-> 補碼:0000 0111
-> 取反:1111 1000 (后面 還要 取補碼,這里是負數,因為計算機中是按照補碼存儲的)
-> 反碼:1000 0111
->反碼+1: 1000 1000 即 -8;
負整數的取反過程: 例如 -7 (1字節 8位 首位位符號位)
源碼: 1000 0111 (以補碼形式存儲,先求補碼)
-> 反碼:1111 1000
->補碼:1111 1001
->取反:0000 0110 即 6;
1. 所有正整數的按位取反是其本身+1的負數
2. 所有負整數的按位取反是其本身+1的絕對值
3. 零的按位取反是 -1(0在數學界既不是正數也不是負數)
總結
以上是生活随笔為你收集整理的关于 C语言的 按位取反 ~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《寻人大师》全集剧情介绍 1
- 下一篇: 北京环球影城刺激项目排名