Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >与或非,左移右移 是什么意思 & 0xFF

与或非,左移右移 是什么意思 & 0xFF

作者头像
zhangjiqun
发布于 2024-12-16 08:39:37
发布于 2024-12-16 08:39:37
9400
代码可运行
举报
文章被收录于专栏:计算机工具计算机工具
运行总次数:0
代码可运行

^=是java的一个符合运算符。表示异或赋值。 如: a^=b相当于:a=a^b; 异或就是两个数的二进制形式,按位对比,相同取0,不同取一

<<表示左移移,不分正负数,低位补0;

注:以下数据类型默认为byte-8位

左移时不管正负,低位补0

正数:r = 20 << 2

  20的二进制补码:0001 0100

  向左移动两位后:0101 0000

         结果:r = 80

负数:r = -20 << 2

  -20 的二进制原码 :1001 0100

 -20 的二进制反码 :1110 1011

  -20 的二进制补码 :1110 1100

  左移两位后的补码:1011 0000

        反码:1010 1111

        原码:1101 0000 

        结果:r = -80

>>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;

注:以下数据类型默认为byte-8位

正数:r = 20 >> 2

  20的二进制补码:0001 0100

  向右移动两位后:0000 0101

       结果:r = 5

负数:r = -20 >> 2

  -20 的二进制原码 :1001 0100

-20 的二进制反码 :1110 1011

  -20 的二进制补码 :1110 1100 

  右移两位后的补码:1111 1011 

        反码:1111 1010

        原码:1000 0101

        结果:r = -5

>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

正数: r = 20 >>> 2

    的结果与 r = 20 >> 2 相同;

负数: r = -20 >>> 2

注:以下数据类型默认为int 32位

  -20:源码:10000000 00000000 00000000 00010100

    反码:11111111  11111111   11111111   11101011

    补码:11111111  11111111   11111111   11101100

    右移:00111111  11111111   11111111   11111011

    结果:r = 1073741819

& 0xFF  : 举例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-252 & 0xFF =4   255 & 0xFF =255
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java中位运算符>>和>>>的区别
<<表示左移移,不分正负数,低位补0; 注:以下数据类型默认为byte-8位 左移时不管正负,低位补0 正数:r = 20 << 2
ha_lydms
2023/08/09
2970
移位操作之(<< >>)和(<<< >>>)的区别
位运算符的优先级~的优先级最高,其次是<<、>>和<<<、>>>,再次是&,然后是^,优先级最低的是|。
向着百万年薪努力的小赵
2022/12/02
5460
C语言关于进制转换,补码, 整数的位操作
一、进制转换  //关于进制转换,从网上找了几张经典图片,便于后面查询 1、二进制转十进制、八进制转十进制、十六进制转十进制 2、十进制转二进制, 十进制转八进制,十进制转十六进制 3、二进制转八进制
tandaxia
2018/09/27
5.2K0
C语言关于进制转换,补码, 整数的位操作
java中的常见运算符的计算方式
在说计算方式之前,先说一下计算机中的原码,反码和补码,计算机中存储的二进制都为数据的补码
闻说社
2024/12/31
1140
java中的常见运算符的计算方式
一个案例搞懂原码、反码、补码,不懂得请看过来
根据冯~诺依曼提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器(据说一开始是有的,后来由于减法器硬件开销太大,被废了 )
用户7656790
2020/08/13
1.2K0
一个案例搞懂原码、反码、补码,不懂得请看过来
为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?
昨天中午,一位粉丝朋友在微信私信我,问:为啥HashMap的hash值计算格式是这样:(h = key.hashCode()) ^ (h >>> 16)?h ^ ^ (h >>> 16)是什么意思?
一行Java
2022/05/17
1.2K0
为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?
深入理解位运算符及其在JavaScript中的应用
沉浸式趣谈
2024/03/13
1890
深入理解位运算符及其在JavaScript中的应用
原码,反码,补码 与(&) 或(|) 非(~) 异或(^) 左移 << 右移 >> 无符号右移 >>>
原码 数字在计算机中以二进制表示,8位的字长,最高位是符号位, 正数为0,负数为1.比如,3为0000 0011; -3为1000 0011。 注意,Java中int为32位。3的16进制表示为3,-3的16进制为fffffffd. 反码 正数的反码和原码相同。 负数的反码为符合位不变,其余按位取反。 3 为0000 0011; -3为1111 1100。 补码 正数的补码和原码相同。 负数的补码为反码+1. 3 为0000 0011; -3为1111 1101 与(&) 按位与,位数对齐,全部为1的结果为
Ryan-Miao
2018/03/14
1.5K0
位运算 原
举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。
wuweixiang
2018/08/14
1K0
七分钟全面了解位运算
“ 阅读本文大概需要 7 分钟。 ”位运算是我们在编程中常会遇到的操作,但仍然有很多开发者并不了解位运算,这就导致在遇到位运算时会“打退堂鼓”。实际上,位运算并没有那么复杂,只要我们了解其运算基础和运算符的运算规则,就能够掌握位运算的知识。接下来,我们一起学习位运算的相关知识。 程序中的数在计算机内存中都是以二进制的形式存在的,位运算就是直接对整数在内存中对应的二进制位进行操作。注意:本文只讨论整数运算,小数运算不在本文研究之列位运算的基础我们常用的 3, 5 等数字是十进制表示,而位运算的基础是二进制。
崔庆才
2019/07/16
1.1K0
原码、反码、补码详解
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为 0,负数为 1。
马修
2021/01/21
1K0
原反补码
直接看代码 1     var a=5; // 00000101; 2 console.log(a|2); // 00000101 | 00000010 -->00000111--->7 3 console.log(a&2); // 00000101 | 00000010 -->00000000--->0 4 console.log(a^2); // 00000101 | 00000010 -->0000011
Jack Chen
2018/09/14
6220
深入Java中的位操作
在方法中是int值,int占4字节32位,所以是:“%32s” 若是byte将32改成8即可;当然对于byte你还需要加上“&0xFF”来做高位清零操作。
程序猿DD
2019/05/10
9650
深入Java中的位操作
剑指offer:Python 二进制中1的个数 &0xffffffff是什么意思?
Python没有unsigned int类型,负数& 0xFFFFFFFF 返回的数就成一个正数 Python要使用 n & 0xffffffff 得到一个数的补码
全栈程序员站长
2022/08/27
9790
剑指offer:Python 二进制中1的个数 &0xffffffff是什么意思?
java为何与0xff进行与运算
为何与0xff进行与运算 在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) {   String ret = "";   for (int i = 0; i < b.length; i++) {    String hex = Integer.toHexString(b[ i ] & 0xFF);    if (hex.length() == 1) {     hex = '0' + hex;    }    ret
IT工作者
2022/05/09
5740
数值信息的机器级存储
计算机中使用八位的块,或者说是「字节」,作为最小的寻址单元。你可以将整个存储器视作一个超大的「字节数组」,每个字节都有一个唯一的数字编号,这个编号就是所谓的地址,通过这个地址,我们可以唯一的确定一块数据。但是我们代码中定义的各种数值又是如何转换为二进制串存储在这些「字节」里面的呢?为什么两个整数相加之后的结果会变成负数?
Single
2018/03/14
1.3K0
数值信息的机器级存储
Java的二进制位操作整理 顶
由于 Java 是跨平台语言,所以 JVM 表现下的基础数据字节长度其实都是一致的。
算法之名
2019/08/20
7870
「位运算」计算机基础复习
这两天有点闲,划水太严重。没有学习啥东西,跑去翻了一下书,看到 &, |, ^, ~, << ,>> 这些位运算。然后就想起来了计算机的 原码,反码 和 补码。感觉写了两年的前端,我好像早已把这些东西抛之脑后,对于位运算我好像也没用过。写这个算是给自己复习,记录一下吧。
拾贰
2019/08/22
5540
进制
染指花晨曦
2023/09/17
1770
江哥带你玩转C语言 | 09 - C语言进制和位运算
00011 0x001 0x7h4 10.98 0986 .089-109 +178 0b325 0b0010 0xffdc 96f 96.0f 96.oF -.003
极客江南
2021/07/11
1.5K0
推荐阅读
相关推荐
Java中位运算符>>和>>>的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验