位运算符java(Java位运算符的问题,&不能进行int,float运算为什么)
本文目录
- Java位运算符的问题,&不能进行int,float运算为什么
- JAVA里面的位运算符>>,<<,>>>是什么意思,请举个列子具体说明一下
- java位运算符详解
- java中位运算符,(byte) 0x80 的那个,为何答案是-32
- 【JAVA】请问位运算符在实际中具体到底有哪些实际用处
Java位运算符的问题,&不能进行int,float运算为什么
首先说,为什么&不能进行int,float运算。&,按Java语言规范定义,是位操作符号,进行按位与运算。float为单精度浮点数,是无法同byte,char,short,int,long这些整数进行位运算的。同理,double也不可。这是因为,浮点数的二进制表示方式不同于整数。而整数,因为二进制表示方式一样,它们之间可以进行位运算。运算时,会按类型自动转型,规则是向位长的转。
JAVA里面的位运算符>>,<<,>>>是什么意思,请举个列子具体说明一下
java 中: 》》带符号右移 (n》》2 将整型值带符号右移2位 ) 《《带符号左移 (n《《2 将整型值带符号左移2位 ) 》》》无符号右移 (n》》》2 将整型值无符号右移2位 ) 在32位系统中任何数左移(右移)32位还是它本身 例如:�6�1a=a<<2将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60(为简单起见,我们用8位二进制数表示十进制数15,如果用16位,结果是一样的)。高位左移后溢出,舍弃不起作用。左移1位相当于该数乘以2,左移2位相当于该数乘以22=4。上面举的例子15<<2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。例如,假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64时,左移一位时溢出的是0,而左移2位时,溢出的高位中包含1。
java位运算符详解
运算符 含义 示例 ~ 按位非(NOT) b = ~a & 按位与(AND) c = a & b | 按位或(OR) c = a | b ^ 按位异或(XOR) c = a ^ b 》》 右移 b = a 》》 2 》》》 右移,左边空出的位以0填充 b = a 》》》 2 《《 左移 b = a 《《 1 当然同样有 &=,|=,^=,》》=,》》》=,《《=。 有关这些操作的细节可以参看 www.pcvc.net/...id=247 位运算 前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。 一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 《《 左移 》》 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。 main(){ int a=9,b=5,c; c=a&b printf("a=%d\nb=%d\nc=%d\n",a,b,c); } 2. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 例如:9|5可写算式如下: 00001001|00000101 00001101 (十进制为13)可见9|5=13 main(){ int a=9,b=5,c; c=a|b; printf("a=%d\nb=%d\nc=%d\n",a,b,c); } 3. 按位异或运算 按位异或运算符“^”是双目运算符。
java中位运算符,(byte) 0x80 的那个,为何答案是-32
0x80 表示 128,(0x 代表 16 进制,8 * 16¹ + 0 * 16º = 128),128 的二进制是 10000000,即 2 的 7 次方。byte 共有 8 位,表示范围是 -128 ~ 127,二进制即 10000000 ~ 01111111,第一位为符号位,1 表示负数,0 表示整数,11111111 即表示 -127,10000000 比较特殊,表示 -128。所以,0x80 本来是整数的 128,二进制 00000000000000000000000010000000 (Java 中整数4个字节32位)。(byte)0x80,将其转换为 byte,即截取最后 8 位,即 10000000,就是 byte 中的 -128。》》 表示右移操作,右移一位表示除以 2。(byte)0x80 》》 2,表示将(byte)0x80右移两位,那么就是 -128 ÷ 2 ÷ 2 = -32。
【JAVA】请问位运算符在实际中具体到底有哪些实际用处
位操作是程序设计中对位模式按位或二进制数的一元和二元操作。 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算).
位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符:位运算符中,除 ~ 以外,其余均为二元运算符。
操作数只能为整型和字符型数据。
3.4.1补码
Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。补码的规定如下:
对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。
对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。如-42的补码为11010110(00101010按位取反11010101+1=11010110)
用补码来表示数,0的补码是唯一的,都为00000000。(而在原码,反码表示中,+0和-0的表示是不唯一的,可参见相应的书籍)。而且可以用111111表示-1的补码(这也是补码与原码和反码的区别)。
3.4.2按位取反运算符~
~ 是一元运算法,对数据的每个二进制位取反,即把1变为0,把0变为1。
例如:
0010101
~
1101010
注意,~运算符与-运算符不同,~21≠-21。
3.4.3按位与运算符&
参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。即:
0&0=0,0&1=0,1&0=0,1&1=1
更多文章:
html转码(请问用jacob将html转word中文乱码怎么解决)
2024年10月14日 23:00
sql2005安装图解win7(我想请问,你是如何在win7家庭版中安装sql server 2005的)
2024年5月25日 18:00
oracle对比两个表字段(oracle plsql 2个表字段对比更新问题)
2024年7月23日 12:03
网站建设代理平台(北京有哪些不错靠谱的网站开发团队或工作室)
2024年7月1日 22:02
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2024年8月22日 07:35
invalid oper是什么意思(invalid pointer operation什么意思)
2024年6月30日 13:31
js一共有几种数据类型(javascript的基本数据类型有哪些)
2024年10月23日 11:05
能力风暴机器人编程教程(如何控制能力风暴机器人走36边形和圆)
2024年8月13日 04:45
视频解析网站(今日头条上的视频qq浏览器下载不了啦,一些解析网站也都失败,怎么办)
2024年6月28日 00:15
求补码表示的二进制数真值(写出下列用补码表示的二进制数的真值(用十进制表示):)
2024年7月20日 04:54
transfer怎么记忆(英语四六级词汇速记技巧之运用漫画轻松记忆)
2024年7月13日 19:52