十进制转换成十六进制小程序(强制转换和移位运算符)
来源:互联网 发布:外国人怎么看中国 知乎 编辑:程序博客网 时间:2024/06/06 03:58
涉及知识点:强制类型转换,移位运算符,十进制转换十六进制。
十进制数 60 转换成十六进制过程分析
60的二进制表示:
0000-0000 0000-0000 0000-0000 0011-1100
&0000-0000 0000-0000 0000-0000 0000-1111 //与运算,和15与运算得到60的十六进制的最后一位。
=0000-0000 0000-0000 0000-0000 0000-1100 //即60的十六进制数,最后一位是12,也就是C。
移位运算符:
然后右移四位,移位运算符 “>>” 和 "<<" ,“>>” 运算符用符号位填充高位,"<<" 运算符用0填充低位。
还有一个右移运算符 ">>>" 用 0 填充高位。
本例中使用 ">>>"。
所以60右移四位后为:
0000-0000 0000-0000 0000-0000 0000-0011
&0000-0000 0000-0000 0000-0000 0000-1111 //继续和 15 进行与运算。
=0000-0000 0000-0000 0000-0000 0000-0011 //得到3,即60的十六进制是 3C。
强制类型转换:
12 怎么转换成16进制的 'C' 呢?如下
char t = 2 + 'A' ; // int 类型强制转换为char类型,前面加char,输出为char类型的 'C'。t = 'C' ;t = 2 + 'A' ; //无强制转换,默认输出 int 类型,char类型转换为对应的ASCII码输出。t = 67;
不同数据类型的数据参与运算,数据类型要强制转换,转换方向是:
(unsigned)char,(unsigned)short->int->unsigned->long->unsigned long->float->double
合法的类型转换见图:
实心箭头表示无信息丢失的转换,虚线箭头表示有精度损失。
代码分析:
public class DtoH { public static void main(String[] args) { toHex(60); } public static void toHex(int num) { for(int x=0; x<8; x++) { int temp = num & 15; //和 1111(二进制) 进行与运算,得到十六进制的最后一位。 if(temp>9) System.out.println((char)(temp-10+'A')); //大于9则转换成十六进制,将10、11、12、13、14、15对应输出为 A、B、C、D、E。 else System.out.println(temp); num = num >>> 4; //右移四位,继续与运算。 } }}
(char)(temp-10+'A')就表示强制转换,12-10+‘A' 转换成 char 类型 ,结果为 'C' 。
代码结果为
即结果为 3C
- 十进制转换成十六进制小程序(强制转换和移位运算符)
- 通过移位把十进制转换成二进制和十六进制
- 二进制、十六进制、十进制转换和运算
- 十进制和十六进制转换
- 十六进制转换成十进制
- 十进制转换成十六进制
- 十进制转换成十六进制
- 十进制转换成十六进制
- 【c++程序】十六进制转换十进制
- 十进制转换二进制通过与运算和移位
- 十进制转换成八进制和十六进制
- 十六进制字符转换为十进制的小程序
- 第二个小程序 十进制与十六进制的转换
- 十进制和十六进制的转换
- 二进制、十进制和十六进制转换
- 二进制,八进制,十六进制和十进制的转换程序
- 十六进制串转换成十进制
- 十进制数转换成十六进制
- 初学C++常遇到的问题
- matlab中的伪随机数原理
- 初学者学Java(二十)
- 深入浅出工厂模式
- 语音技术现状:四千万突破语音产业的技术壁垒?
- 十进制转换成十六进制小程序(强制转换和移位运算符)
- 关注博文
- Java NIO框架Netty教程(一) Hello Netty
- Linux中的变量和数组
- HDU 1728 逃离迷宫 BFS
- Word公式编辑器的使用方法
- Java NIO框架Netty教程(二) 白话概念
- java笔记【八】
- 致2013级学弟学妹----语音和其他