具体解题步骤如下(用sql来实现);
1、先构建二进制到十进制的转换函数。
CREATE OR REPLACE FUNCTION BIT_TO_NUMBER(P_BIN IN VARCHAR2) RETURN NUMBER AS
V_SQL VARCHAR2(30000) := 'SELECT BIN_TO_NUM(';
V_RETURN NUMBER;
BEGIN
IF LENGTH(P_BIN) >= 256 THEN
RAISE_APPLICATION_ERROR(-20001, 'INPUT BIN TOO LONG!');
END IF;
IF LTRIM(P_BIN, '01') IS NOT NULL THEN
RAISE_APPLICATION_ERROR(-20002, 'INPUT STR IS NOT VALID BIN VALUE!');
END IF;
FOR I IN 1 .. LENGTH(P_BIN) LOOP
V_SQL := V_SQL || SUBSTR(P_BIN, I, 1) || ',';
END LOOP;
V_SQL := RTRIM(V_SQL, ',') || ') FROM DUAL';
EXECUTE IMMEDIATE V_SQL
INTO V_RETURN;
RETURN V_RETURN;
END;
2、测试该函数,将二进制(101101)转换成十进制(45);
3、再编辑脚本,将10进制(45)转成16进制(2d);select trim(to_char(45,'xxxxxx')) from dual t;
4、总体的执行脚本,即为:
select trim(to_char(bit_to_number(101101),'xxxxxx')) a from dual t;
101101(二进制) = 2D(十六进制)。
二进制转十六进制:
因为二进制数仅由0和1组成,所以只需要记住二进制数的低位到高位分别代表1、2、4、8、16、32...即2的(n-1)次方。对于四位二进制数,从高到低分别为8、4、2、1。要将二进制转换为十六进制,只需每四位从右向左组合二进制数,每个组合都由十六进制数表示。
例如:
1110110的四个组合相当于00111010(注意位数小于0),0011=21=31010=82=a,因此转换的十六进制数是3A。
扩展资料:
计算机系统基本上采用二进制,数据主要以补码的形式存储在计算机中。计算机中的二进制文件是一个非常小的开关,1使用“开”,0使用“关”。
计算机的发明和应用被称为20世纪第三次技术革命的重要标志之一,因为数字计算机只能识别和处理由“0”组成的代码。“1”符号字符串。它的操作模式完全是二进制的。
19世纪,爱尔兰逻辑学家乔治·布尔对逻辑命题的思考过程被转化为对某些符号“0”的代数演算。“^1"。二进制是二进制。0和1是基本运算符。因为它只使用0和1的数字,所以它非常简单方便,并且容易以电子方式实现。
参考资料来源:百度百科-二进制
参考资料来源:百度百科-十六进制
101101-->0010 1101
再将上面每四位转成一个0到f的数,怎样转呢,它从高位到低位其实就是8,4,2,1,即1101就是8+4+1=13,即是D,0010就是2,组合一起就是2D;
8, 4, 2 ,1怎样来的,它就是1*(2^0),1*(2^1)...... 好难说得清,不说了。
推荐于2017-09-15 · 知道合伙人教育行家
0010 1101
每四位按二进制转十进制的方法转换,
2D