关于Java的移位运算符
/** * 测试移位运算符<br/> * "<<" 左移 : 右侧补0<br/> * ">>" 带符号右移 : 左侧补符号位:正数补0,负数补1<br/> * ">>>"无符号右移 : 左侧补0<br/> */ public class TestShift { public static void main(String[] args) { testLeftShift(); testRightShift(); testUnsignedRightShift(); } /** * 左移: 右侧补0 */ public static void testLeftShift(){ int num = -8; int shift = 2; leftShift(num, shift); leftShift(-num, shift); System.out.println("--------------"); } /** * 左移: 右侧补0 */ public static void leftShift(int num, int shift){ // num 左移 shift位 int r = num << shift; System.out.println("向左移位: "+ num +" << "+shift); System.out.println("移位前:"+binary(num)); System.out.println("移位后:"+binary(r)); System.out.println(""); } /** * 测试带符号右移: 左侧补符号位 */ public static void testRightShift(){ int num = -8; int shift = 2; rightShift(num, shift); rightShift(-num, shift); System.out.println("--------------"); } /** * 带符号右移: 左侧补符号位 */ public static void rightShift(int num, int shift){ // num 左移 shift位 int r = num >> shift; System.out.println("(带符号)向右移位: "+ num +" >> "+shift); System.out.println("移位前:"+binary(num)); System.out.println("移位后:"+binary(r)); System.out.println(""); } /** * 测试右移: 左侧补0 */ public static void testUnsignedRightShift(){ int num = -8; int shift = 2; unsignedRightShift(num, shift); unsignedRightShift(-num, shift); System.out.println("--------------"); } /** * 右移: 左侧补0 */ public static void unsignedRightShift(int num, int shift){ // num 左移 shift位 int r = num >>> shift; System.out.println("无符号向右移位: "+ num +" >>> "+shift); System.out.println("移位前:"+binary(num)); System.out.println("移位后:"+binary(r)); System.out.println(""); } public static String binary(int i){ return alignRight(Integer.toBinaryString(i),32,'0'); } /** * 向右对齐 * @param str 原始字符串 * @param digit 需要的总位数 * @param addChar 添加的字符 * @return */ public static String alignRight(String str, int digit, char addChar){ str = String.valueOf(str); digit = digit > 0 ? digit : 0; StringBuilder builder = new StringBuilder(digit); builder.append(str); for (int len = str.length(); len < digit; len++) { builder.insert(0, addChar); } // return builder.toString(); } }
关于Java的移位运算符的更多相关文章
- Java的移位运算符
1.左移运算符:<< 丢弃左边指定位数,右边补0. 注意: 当int类型进行左移操作时,左移位数大于等于32位操作时,会先求余(%)后再进行左移操作.也就是说左移32位相当于不进行移位操作 ...
- Java 基础--移位运算符
移位运算符就是在二进制的基础上对数字进行平移.按照平移的方向和填充数字的规则分为三种: <<(左移).>>(带符号右移)和>>>(无符号右移). 1.左移 按 ...
- Java:Java的<<<移位运算符详解
1) 左移运算(<<) 左移就是把所有位向左移动几位 如: 12 << 2 意思就是12向左移动两位 12的二进制是: 0000 1100 通过这个图我们 ...
- java中移位运算符:<<、>>和>>>之间的比较
一.说明 <<:运算符将二进制位进行左移操作 >>:运算符将二进制位进行右移操作 >>>:运算符将用0填空高位 二.举例 /** * *----------c ...
- java中的移位运算符:<<,>>,>>>总结
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- java 移位运算符
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- Java中的移位运算符
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- 移位运算符(JAVA)
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >&g ...
- java移位运算符具体解释
java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的全部位都左移 ...
随机推荐
- 浅谈Trie树(字典树)
Trie树(字典树) 一.引入 字典是干啥的?查找字的. 字典树自然也是起查找作用的.查找的是啥?单词. 看以下几个题: 1.给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单 ...
- 90. Subsets II(中等,编写代码有难度)
Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...
- 剑指架构师系列-持续集成之Maven实现项目的编译、发布和部署
Maven组织项目进行编译.部署 Maven项目基本的结构说明如下: mazhi // 控制所有荐的编译.部署.发布 mazhi-app-parent // 项目的父项目,有一些公共的设置可以被子 ...
- Go 语言数据类型
在 Go 编程语言中,数据类型用于声明函数和变量. 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存. Go 语言按类别有以下几种 ...
- 【mybatis深度历险系列】mybatis中的动态sql
最近一直做项目,博文很长时间没有更新了,今天抽空,学习了一下mybatis,并且总结一下.在前面的博文中,小编主要简单的介绍了mybatis中的输入和输出映射,并且通过demo简单的介绍了输入映射和输 ...
- 如何找出Xcode中不同版本Swift的路径
我们知道Xcode中可能包含不知一个Swift的版本,那么我们如何找到它们对应的路径呢? 熟悉unix shell命令的童鞋都知道有一个find指令,在我们已知Xcode路径时,我们可以在其中找到Sw ...
- 目标管理体系:OKR
一.什么是OKR体系? OKR体系的全称是Objectives & Key Results,即目标与关键成果.所谓OKR,O = Objective 可以理解为企业目标,KR =Key Res ...
- Dynamics CRM 通过Odata创建及更新记录各类型字段的赋值方式
CRM中通过Odata方式去创建或者更新记录时,各种类型的字段的赋值方式各不相同,这里转载一篇博文很详细的列出了各类型字段赋值方式,以供后期如有遗忘再次查询使用. http://luoyong0201 ...
- Findbugs异常总汇
FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug,主要检查bytecode中的bug patterns,如NullPoint空指针检查 ...
- 使用OpenCV读、操作、写图像并与bash合作对某个目录下所有图像进行类似处理
我门要对某个目录下所有图像文件进行统一处理,如果图像的数量过多,那么手动地一张张处理就会显得有些麻烦.本文使用OpenCV和bash来完成我们指定的任务. 任务 将目录A下的所有统一格式的jpg图像变 ...