java语言基础回顾(二)--位运算以及原码,反码,补码

xiaoxiao2021-07-27  118

原码,反码,补码简介

*原码

二进制的定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。例:通过一个字节表示 +7 原码:0(符号位) 0000111-7原码:1(符号位) 0000111

*反码 正数的反码与原码一样;负数的反码是对其除符号位外逐位取反,1变0,0变1;

*补码 正数的补码与原码一样;负数的补码是它的反码加1求和; 方法:求负数的补码:依照原码求出反码再加1 求负数的补码的原码:补码-1再求出原码

计算机都是以数据的补码进行存储和运算的,所以进行有关于负数运算的时候要注意。必须先求出负数的补码再运算,而正数则不用,因为它的补码是它的本身。

位运算

位运算符的分类以及用法

与 & 有0则0,表达式两边都为true才true或 | 有1则1 ,表达式只要有一边为true就true异或 ^ 相同则0,不同则1,表达式两边相反则true取反 ~ 按位取反(符号位也需要,和求反码不一样)有符号位左移 << a>>b,a向左移动b位,则是a乘以2的b次幂有符号位右移 >> 与左移相反,则是a除以2的b次幂无符号位右移 >>> 忽略符号位,空位都以0补齐

口诀: 正数取反等于正数加1取负 例11取反等于-12 负数取反等于负数加1取正 例-7取反等于6

注意点: 负数的位运算: 例 :-7&-1 -7的补码: 1 111 1001 -1的补码:1 111 1111 相与:1 111 1001 求出了结果的补码**(注意:答案不是这个,还要求出它的原码)** 1 111 1000 接着求出结果的反码 1 000 0 111 最后是求出它的原码 ,为 -7

面试题

实现两个数值的交换,不能定义第三方变量 异或运算^的特征:一个数异或同一个数两次等于它本身,不变。 而开发的时候多使用定义第三方变量的方法:

转载请注明原文地址: https://www.6miu.com/read-4823373.html

最新回复(0)