位运算符&&二进制

位运算符
二进制和十进制之间的转换
a. 十进制-->二进制
除2的操作,直到除到0为止,获得的余数倒序就是十进制对应的二进制
byte 1一个字节 8位(二进制的位数)
short 2 16
int 4 32
long 8位 64
byte b=2;
2 -> 10
3 -> 11
15 -> 1111
13 -> 1101
b. 二进制-->十进制
1011 --> 11
2^3*1 + 2^2*0 + 2^1*1 + 2^0*1
8+0+2+1
11001 --> 25
2^4*1 + 2^3*1 + 2^2*0 + 2^1*0 + 2^0*1
16+8+0+0+1 25
32 16 8 4 2 1
最高位是符号位 0正数 1负数
原码:10001111
反码:11110000
原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),
其余位表示数值的大小。
例如,用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码(原码逐位取反)的末位加1。

3. 位运算符
<< 移位后,空位补0,被移除的高位丢弃,空缺位补0。 M << n   其实可以这么算   M << n  = M * 2^n
>> 被移位的二进制最高位是0,右移后,空缺位补0; M >> n  = M / 2^n 正数的原码 反码 补码一致
最高位是1,空缺位补1。
-15 1 0 0 0 1 1 1 1
反码 1 1 1 1 0 0 0 0
补码 1 1 1 1 0 0 0 1
右移3位 1 1 1 1 1 1 1 0

补码 1 1 1 1 1 1 0 1
反码 1 0 0 0 0 0 1 0
>>2得出 -2
>>> 被移位二进制最高位无论是0或者是1,空缺位都用0补。 若是正数 其实可以这么算   M << n  = M * 2^n 负数则变成好大的正数
& 二进制位进行&运算,只有1&1时结果是1,否则是0;
| 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^ 相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
~ 正数取反,各二进制码按补码(此时为正整数)各位取反(变成负整数),再补码
(负整数补码原码符号位不变,先将原码减去1,最后数值位各位取反)
~15 0 0 0 0 1 1 1 1
反码 == 0 0 0 0 1 1 1 1
补码 == 0 0 0 0 1 1 1 1
取反 ~ 1 1 1 1 0 0 0 0
----------------------------------
补码 -1 1 1 1 0 1 1 1 1
反码 ~ 1 0 0 1 0 0 0 0
原码 -2^4 = -16
求负整数的补码,原码符号位不变,先将原码减去1,最后数值位各位取反。
(但由于2进制的特殊性,通常先使数值位各位取反,最后整个数加1。)
如下 结果一样
~15 0 0 0 0 1 1 1 1
反码 == 0 0 0 0 1 1 1 1
补码 == 0 0 0 0 1 1 1 1
取反 ~ 1 1 1 1 0 0 0 0
----------------------------------
数值位取反 1 0 0 0 1 1 1 1
+1 1 0 0 1 0 0 0 0 == -16

负数取反,各二进制码按补码各位取反, 再补码(但是正数的补码与其原码相同)
-34 1 0 1 0 0 0 1 0
反码 1 1 0 1 1 1 0 1
补码 1 1 0 1 1 1 1 0
取反 0 0 1 0 0 0 0 1 ==33

原文地址:https://www.cnblogs.com/Lovemeifyoudare/p/11440350.html

时间: 2024-11-13 10:43:35

位运算符&&二进制的相关文章

javascript运算符——位运算符

× 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度极快,且合理使用能达到很好的效果.本文将介绍javascript中常常被忽视的运算符——位运算符 二进制表示 ECMAScript中的所有数值都以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值,而是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数 这种位数转换使得在对特

java 二进制 位运算符

位运算符 & | ~ ^& : 对两个二进制数按位做与运算,即 1 & 0 = 0; 1 & 1 = 1; 0 & 0 = 0;| : 对两个二进制数按位做或运算,即 1 & 0 = 1; 1 & 1 = 1; 0 & 0 = 0;~ : 对一个二进制数按位取反,即 ~1 = 0; ~0 = 1;^ : 对两个二进制数按位做异或运算,即 1 ^ 1 = 0; 1 ^ 0 = 1, 0 ^ 0 = 0; 相同取0,不同取1另:1)    十进制

js 位运算符 以及 心算十进制二进制相互转换

位运算符 |(或) 运算 有1即为1,双0才为0 1 31| 2 = 11111 | 10 = 11111 = 3 2 3 | 4 = 11 | 100 = 111 = 7 3 6 | 7 = 110 | 111 = 111 = 7 4 10 | 9 = 1010 | 1001 = 1011 = 11 &(与) 运算 有0即为0,双1才为1 1 31 & 2 = 11111 & 10 = 00010 = 2 2 3 & 4 = 11 & 100 = 000 = 0

位运算符

1.<<  左移 在许多计算机编程语言(例如:C语言.C++语言.Java语言.JavaScript语言,Pascal语言等)中,"<<"代表左移运算符 例如:14 << 2的值为56(计算方法左移n位就*2的n次方,这题就可以算成14*2^2) 2.~  按位 否 C/C++ 语言中,~又是一种运算符--"二进制 按位 否 运算符" 计算方法:-(自身+1) 例如:int x = 121; 写成二进制01111001: ~x运算

Java位运算符

位运算符 在Java中所有的数据都是以二进制数据的形式进行运算的,即如果是一个int型变量,要采用位运算时则必须将其变为二进制数据:每一 位二进制进行与.或.异或操作的结果如下: package com.test; public class Test { public static void main(String[] args) { int x = 3; int y = 6; System.out.println(x & y); System.out.println(x | y); Syste

Java的位运算符详解实例

Java的位运算符详解实例——与(&).非(~).或(|).异或(^).右移(>>).左移(<<).无符号右移(>>>) 位运算符主要针对二进制, 它包括了:“与”.“非”.“或”.“异或”."右移"."左移"."无符号右移". 从表面上看似乎有点像逻辑运算符, 但逻辑运算符是针对两个关系运算符来进行逻辑运算, 而位运算符主要针对两个二进制数的位进行逻辑运算. 下面详细介绍每个位运算符. 1.与运

黑马程序员---C基础6【#include指令】【模块化编程】【计算机的进制】【原码、反码、补码】【位运算符】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [#include指令] 1.文件包含命令的格式: 1)#include “”双引号是包含用户自己书写定义的文件(可以是头文件,也可以是普通的文件)#include是预处理指令,不是一个语句,不需要加封号 2)#include<>   包含一个系统(编译器自带)的头文件 2.文件包含的实质: 把指定文件内容插入该命令行位置取代该命令行, include不一定非要写在第一行: 3.includ

Java功底篇系列-03-一些位运算符你会如何理解?

话题一:异或 先看一段代码吧: 这段代码是用来实现a,b交换的. 异或是位运算符,0^1为1,其他情况都是0,这是一个加法不进位的功能! 这有什么用呢? 其实通过上面交换的例子,我们已经明白A^B^A将得到B,也就是可以实现数据还原的功能! 话题二:%与& 如果有一堆数据,我们想将这些数据通过HASH的方式,放入到桶中. 我们可以将桶进行编号,比如0号,1号,...N号桶. 给我们一个数据,我们要完成这个数据和桶的序号的映射转化关系,这样放入和查找就可以了. 由于对于任何一个非负数A,进行A%B

C语言的各种位运算符的操作简述

运算符: 算术运算符: + , - , * , / , % , ++ , -- 符合运算符: += , *= , /= , %= 条件运算符:  ? : 关系运算符: == , >= , <= , != , > , < 逻辑运算符: && , || , ! 赋值运算符: = 其他运算符: * , & , -> , . 位运算符: 1 > 按位与 &同时为一则为一 否则为零 3 & 5结果为 1(先将两个数化为二进制在进行计算) 3