如何将二进制转换为十进制和八进制?
How to convert Binary to Decimal and Octal?
我有一个二进制数,我想将其转换为十进制和八进制。
(0100 1111 1011 0010)2
我知道如何将它转换成小数。但是这个问题让我感到困惑。因为每4位中间有一个space "0101 1111"
你能帮助我如何理解这个问题吗?
谢谢
space 只是为了便于阅读。如果您尝试将其转换为十六进制,则特别好,因为 4 个二进制数字组成一个十六进制数字。
空格不是数字的一部分,只是为了让人们更容易阅读。从二进制到八进制的转换很简单。将二进制数字分成 3 组(从右到左,向最左边的组添加额外的 0,然后分别转换每个组。您的示例:
0100 1111 1011 0010 -> 100 111 110 110 010 -> 47662
首先,这些空格是为了便于阅读;只需删除它们。其次,如果这不是计算机程序,只需打开 windows 计算器,去查看,然后 select 程序员。然后选择 bin 单选按钮并输入您的号码。 qword 单选按钮应 selected。如果是一个程序,我需要知道用什么语言来帮助你。
首先,确保您要转换为十进制和八进制的数字实际上是 'Binary' 而不是 'Binary Coded Decimal (BCD)'。通常当数字被分组为 4 个二进制数字时,它代表 BCD 而不仅仅是二进制。
所以,一旦你确定它实际上是二进制而不是 BCD,转换为十进制和八进制都是简单的步骤。
对于二进制到八进制,您将二进制数分成 3 位数字组,从最低有效位(LSB 或最右边)开始到最高有效位(MSB 或最左边)。如果无法在 MSB 处形成一组 3 位数字,则添加前导零。
现在将每组数字从二进制转换为八进制:
(000) -> 0
(001) -> 1
.
.
(111) -> 7
最后把数字放在一起,然后你就把二进制转换成了八进制。
例如:-
二进制 - 00101101
分成 2 组: -> 000 101 101 -> 0 5 5 -> 55
“二进制编码的十进制”和 'Binary' 之间的区别:
对于十进制数1248
二进制文件就是 10011100000
但是,BCD 将是 -> 0001 0010 0100 1000
要非常快速地将八进制转换为十进制,有两种方法。您实际上可以在 bitshift 中进行实际计算。在编程中,你应该做位移位。
Example octal number = 147
Method one: From left to right.
Step 1: First digit is one. Take that times 8 plus 4. Got 12.
Step 2: Take 12 times 8 + 7. Got 103, and 103 is the answer.
最终您可以使用方法一将任何基数转换为基数 10。
方法一是从左到右读取字符串。制作一个用于计算的结果容器。当您读取第一个最左边的数字时,您将其添加到结果值中。每次读取一个新数字时,将结果值乘以数字的基数(对于八进制,即 8),然后将新数字的值添加到结果中。
Method 2, bitshift:
Octal Number: 147.
Step 1: 1 = 1(bin) = Shift << 3 = 1000(result value)
Step 2: 4 = 100(bin) + 1000(result value) = 1100(result value)
Step 3: 1100(result value) Shift << 3 = 1100000
Step 4: 7 = 111(bin) + 1100000(result value) = 1100111
Step 5: 1100111 binary is 103 decimal.
在编程循环中,您可以执行如下操作,速度快如闪电。代码非常简单,可以转换成任何编程语言。请注意,没有任何错误检查。
for ( int i = 0; i < length; i++ ){
c = (str.charAt(i) ^ 48);
if ( c > 7 ) return 0; // <- if char ^ 48 > 7 then that is not a valid octal number.
out = (out << 3) + c;
}
我有一个二进制数,我想将其转换为十进制和八进制。
(0100 1111 1011 0010)2
我知道如何将它转换成小数。但是这个问题让我感到困惑。因为每4位中间有一个space "0101 1111" 你能帮助我如何理解这个问题吗?
谢谢
space 只是为了便于阅读。如果您尝试将其转换为十六进制,则特别好,因为 4 个二进制数字组成一个十六进制数字。
空格不是数字的一部分,只是为了让人们更容易阅读。从二进制到八进制的转换很简单。将二进制数字分成 3 组(从右到左,向最左边的组添加额外的 0,然后分别转换每个组。您的示例:
0100 1111 1011 0010 -> 100 111 110 110 010 -> 47662
首先,这些空格是为了便于阅读;只需删除它们。其次,如果这不是计算机程序,只需打开 windows 计算器,去查看,然后 select 程序员。然后选择 bin 单选按钮并输入您的号码。 qword 单选按钮应 selected。如果是一个程序,我需要知道用什么语言来帮助你。
首先,确保您要转换为十进制和八进制的数字实际上是 'Binary' 而不是 'Binary Coded Decimal (BCD)'。通常当数字被分组为 4 个二进制数字时,它代表 BCD 而不仅仅是二进制。
所以,一旦你确定它实际上是二进制而不是 BCD,转换为十进制和八进制都是简单的步骤。
对于二进制到八进制,您将二进制数分成 3 位数字组,从最低有效位(LSB 或最右边)开始到最高有效位(MSB 或最左边)。如果无法在 MSB 处形成一组 3 位数字,则添加前导零。
现在将每组数字从二进制转换为八进制:
(000) -> 0 (001) -> 1 . . (111) -> 7
最后把数字放在一起,然后你就把二进制转换成了八进制。
例如:- 二进制 - 00101101 分成 2 组: -> 000 101 101 -> 0 5 5 -> 55
“二进制编码的十进制”和 'Binary' 之间的区别:
对于十进制数1248 二进制文件就是 10011100000 但是,BCD 将是 -> 0001 0010 0100 1000
要非常快速地将八进制转换为十进制,有两种方法。您实际上可以在 bitshift 中进行实际计算。在编程中,你应该做位移位。
Example octal number = 147
Method one: From left to right.
Step 1: First digit is one. Take that times 8 plus 4. Got 12.
Step 2: Take 12 times 8 + 7. Got 103, and 103 is the answer.
最终您可以使用方法一将任何基数转换为基数 10。
方法一是从左到右读取字符串。制作一个用于计算的结果容器。当您读取第一个最左边的数字时,您将其添加到结果值中。每次读取一个新数字时,将结果值乘以数字的基数(对于八进制,即 8),然后将新数字的值添加到结果中。
Method 2, bitshift:
Octal Number: 147.
Step 1: 1 = 1(bin) = Shift << 3 = 1000(result value)
Step 2: 4 = 100(bin) + 1000(result value) = 1100(result value)
Step 3: 1100(result value) Shift << 3 = 1100000
Step 4: 7 = 111(bin) + 1100000(result value) = 1100111
Step 5: 1100111 binary is 103 decimal.
在编程循环中,您可以执行如下操作,速度快如闪电。代码非常简单,可以转换成任何编程语言。请注意,没有任何错误检查。
for ( int i = 0; i < length; i++ ){
c = (str.charAt(i) ^ 48);
if ( c > 7 ) return 0; // <- if char ^ 48 > 7 then that is not a valid octal number.
out = (out << 3) + c;
}