关于2进制和16进制互转的一点思索

搞计算机的就必须碰2进制和16进制,谁叫计算机只认识 0 和 1 呢。。。。

之前对16进制转2进制的时候一直有点模糊,因为16进制可以一位抵2进制的4位

比如16进制的D8,就是2进制的 1101 1000,那就是D对应于 1101,8 对应于 1000.。。

稍微计算一下就知道,确实是对的,D对应于十进制的13,而13的二进制表示正是1101,为什么会恰好是16进制的一位对应2进制的4位呢?

因为 2^4==16 。仔细思考一下,如果我们把16进制和2进制都换成10进制来处理就清楚很多了,D8是13*16+8*1,即13*2^4+8*2^0,再来仔细看一下,

一个数乘以2的多少次方,就相当于把它右移多少位:

比如5 ,他的2进制表示是0101,如果乘以8,就是0101000,后面加了3个0;

现在再来看16进制,每一位不正是乘了一个2的4次方,相当于右移4位,再加上前面的数吗?

顿时恍然大悟!

The END

时间: 2025-01-01 10:34:24

关于2进制和16进制互转的一点思索的相关文章

java 10进制转16进制带ox格式输出

问题描述 java 10进制转16进制带ox格式输出 请教:java 怎么把10进制转16进制并且 带ox格式输出 如 60(10进制) 输出 : 0x00,0x00,0x00,0x3c 解决方案 如下代码: public static void main(String[] args) throws IOException { int num=3000; ByteArrayOutputStream baos=new ByteArrayOutputStream(); DataOutputStrea

进制转换-16进制转化为10进制问题

问题描述 16进制转化为10进制问题 16进制 (单字) fbb4 转化为10进制结果是 -1100 ,但 如果 是这样的,就转化 为10进制的就变成 64436了,请问一下这是什么原因?另外 ,我在网上查了一下,大都的转化的结果 都是64436,可我想要的结果 是-1100,请问这个要怎么算出来 解决方案 fbb4 变成二进制是 1111 1011 1011 0100 再计算规则上取后面1个半字节, 也就是 1011 1011 0100 就是你想要的结果-1100 解决方案二: 你应该是用那种

sql-SQL 10进制转16进制 求解释

问题描述 SQL 10进制转16进制 求解释 SQL 10进制转16进制 求解释 在调查使用SQL进行10进制转35进制转化的资料时,找到如下SQL文. 经过运行确实能成转化,但小弟才疏学浅实在看不懂原理,请教各位大神帮忙解释一下 重要步骤的原理或目的. 谢谢!!!!!!! DECLARE @BASE_35 VARCHAR(100) DECLARE @BASE_10 INT SET @BASE_10 = '88' SET @BASE_35=N'' SELECT @BASE_35 = CASE W

vb6 算法 进制-一个16进制算法问题 VB6 求大神

问题描述 一个16进制算法问题 VB6 求大神 有3个示例 不知道是什么算法转换出来 求大神 000000 加密成 649D976C775C 895C32 加密成 6BA39C967A56 FFFFFF 加密成 79B0AD798D6A 解决方案 这个恐怕有点难度喔,常用的加密算法一个一个试?也有可能是自定义的算法,那更不行了,就算要破解,就三个样本也不行哇,,,看看大神降临吧

C语言实现字符串中(10进制和16进制)转成十进制数

如何将字符串中的10进制数和16进制数提取出来,看以下代码: #include <stdio.h> typedef char TUINT8 ; typedef int TUINT32; TUINT32 Read_DecNumber(const TUINT8* str); TUINT32 Read_HexNumber(const TUINT8* str); int main(void) { int ret = Read_DecNumber("1000"); int d = R

asp.net(c#)下各种进制间的轻松转换(2进制、8进制、10进制、16进制)

其中的两个方法可以轻松的实现各种进制的数值间的转换: Convert.ToInt32(string value, int fromBase): 可以把不同进制数值的字符串转换为数字,其中fromBase参数为进制的格式,只能是2.8.10及16: 如Convert.ToInt32("0010",2)执行的结果为2; Convert.ToString(int value, int toBase): 可以把一个数字转换为不同进制数值的字符串格式,其中toBase参数为进制的格式,只能是2.

2进制、8进制、10进制、16进制...各种进制间的轻松转换

转换 在.net Framework中,System.Convert类中提供了较为全面的各种类型.数值之间的转换功能.其中的两个方法可以轻松的实现各种进制的数值间的转换: Convert.ToInt32(string value, int fromBase): 可以把不同进制数值的字符串转换为数字,其中fromBase参数为进制的格式,只能是2.8.10及16: 如Convert.ToInt32("0010",2)执行的结果为2; Convert.ToString(int value,

SQL SERVER 16进制与10进制转换

最近工控项目中遇到的16进制与10进制转换,在.NET中比较容易实现,在SQLSERVER中发现没有直接 的转换,尤其是出现超出范围的long负数,即无符号64位整数在sqlserver中的存储.网上找的很多方法 只适用于32位整数和64位正整数,64位负数无法实现,现将使用的转换方法记录下来. 利用SQLSERVER中的varbinary来间接实现. 16进制字符串转10进制bigint(0-FFFFFFFFFFFFFFFF): 由于二进制比较容易转换为bigint 所以先将字符串转为二进制v

c语言-输入一个十进制整数,依次转换成2到16进制数

问题描述 输入一个十进制整数,依次转换成2到16进制数 求大神帮帮忙做一下 我刚刚学C语言 程序代码 弄了好久都没弄出来 大神帮忙编一个程序代码 ,谢谢了 解决方案 #include <iostream> using namespace std; char metachar[] = "0123456789abcdef"; void tobasen(int x, int n) { if (x > 0) { tobasen(x / n, n); cout <<