位运算:按位与、按位或、按位异或、按位非(补码 反码)
·
原码 补码 反码
计算机中的符号数有三种表示方法:原码、补码、反码。这三种表示方法都由符号位和数值位两部分组成,符号位1表示负数,0表示正数。
二进制数在内存中是以补码的形式存放的。为了更好理解计算机内部的运算,可以将其理解为二进制的补码的运算。
而我们日常所用的是十进制,日常从十进制转换成的二进制为二进制原码。
引入补码和原码是为了理解计算机运算,更方便计算机做减法,所以补码和反码的定义是指定的,无需证明。
反码:正数的反码为其本身,负数的反码是其原码除了符号位外全部按位取反。
补码:正数的补码为其本身,负数的补码是将其原码的反码+1。
补码求原码:就是对该补码再求补码得到的就是其原码。
注意:反码是不包含符号位的按位取反,和全部的按位取反是不一样的。
位运算
位运算有四种:按位与&、按位或 | 、按位异或^、按位非~
- & :任意二进制位与0进行&运算,结果是0;与1进行&运算,结果是其原值。a&0 = 0;a&1 = a。
- | :任意二进制位与0进行 | 运算,结果为其原值;与1进行 | 运算,结果为1。a | 0 = a;a | 1 = 1。
- ^ :任意相同二进制位进行^运算,结果为0;任意不同二进制位进行 ^ 运算,结果为1。
| 元素1 | 元素2 | &结果 | I 结果 | ^结果 |
|---|---|---|---|---|
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 |
- ~ :按位取非,~ a = -(a+1)
~正数:①正数的二进制全部(包含符号位)按位取反(不是求反码),②对取反后的值除了符号位再取反即求反码,③+1。(其实就是取反符号位后+1)
~负数:①负数的二进制全部(包含符号位)按位取反,②+1,③不包含符号位再取反。
参考:按位取非的计算详解
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)