Java将十进制转换为8位二进制(Java convert from decimal to 8-bit binary)
我写了简单的java代码来从十进制转换为8位二进制:抱歉这个愚蠢的问题
1 int dec=1;
2 String result="";
3 String reverse = "";
4 while(dec!=0)
5 {
6 result+=dec%2;
7 dec=dec/2;
8 }
9 //8-Bit Binary
10 System.out.println("dec length is :"+result.length());
// int j = 8-result.length(); // for(int i = 0; i
11 for(int i=0;i
12 {
13 result+=0;
14 System.out.println("*");
15 }
16 System.out.println("8-Bit before reverse:"+result);
17 for(int i = result.length() - 1; i >= 0; i--)
18 {
19 reverse = reverse + result.charAt(i);
20 }
21 System.out.println("8-bit representation:"+reverse);
结果为:dec长度为:1 * * * *反向前8位:10000 8位表示:00001
但是当我删除第13行(结果+ = 0;)编译器打印7星号(*),这是什么原因? 结果的长度将每次更新
i wrote simple java code to convert from decimal to 8-bit binary: sorry for this stupid question
1 int dec=1;
2 String result="";
3 String reverse = "";
4 while(dec!=0)
5 {
6 result+=dec%2;
7 dec=dec/2;
8 }
9 //8-Bit Binary
10 System.out.println("dec length is :"+result.length());
// int j=8-result.length(); // for(int i=0;i
11 for(int i=0;i
12 {
13 result+=0;
14 System.out.println("*");
15 }
16 System.out.println("8-Bit before reverse:"+result);
17 for(int i = result.length() - 1; i >= 0; i--)
18 {
19 reverse = reverse + result.charAt(i);
20 }
21 System.out.println("8-bit representation:"+reverse);
the result was : dec length is :1 * * * * 8-Bit before reverse:10000 8-bit representation:00001
but when i remove line 13 (result+=0;) the compiler print 7 asterisk(*), what is the reason for that? length of result will update every time
原文:https://stackoverflow.com/questions/48952307
更新时间:2019-12-21 05:30
最满意答案
这是因为你的for循环的结果:
for(int i=0;i
其中的行动:
result+=0;
增加结果的长度使得8-result.length()的结果更小(8 - 2 = 6,8 - 3 = 5 ...),因此循环执行的次数更少。
It is because of the confition of your for loop:
for(int i=0;i
And the action in it:
result+=0;
Increasing the length of result makes the result of 8-result.length() smaller (8 - 2 = 6, 8 - 3 = 5 ...), hence the loop being executed less times.
相关问答
首先, main()的循环没有意义。 调用函数一次,完成。 str是一个16元素char数组,其元素可以通过索引0至15访问。 您访问了第16个,导致未定义的行为。 printf %s需要一个null结束的char数组。 你没有提供。 这是未定义的行为了。 该函数不返回任何内容。 使返回类型void 。 反向打印二进制表单正在完成。 确保这是你想要的。 您应该反向打印数组。 for循环完成后,您将打印它。 for(int in = BIT-1; in >= 0; in--){
printf
...
打印此页面,悬挂在显示器上方 http://graphics.stanford.edu/~seander/bithacks.html 但它大致相似 if(value&(1 << bit_number)) Print this page out, hang above your monitor http://graphics.stanford.edu/~seander/bithacks.html But it's roughly something like if ( value & (1 << b
...
这是因为你的for循环的结果: for(int i=0;i
其中的行动: result+=0;
增加结果的长度使得8-result.length()的结果更小(8 - 2 = 6,8 - 3 = 5 ...),因此循环执行的次数更少。 It is because of the confition of your for loop: for(int i=0;i
And the action in
...
您可以使用按位运算符。 例如。 var number = 54;
if (number & 1) { $('#mon').attr('checked', 'checked'); }
if (number & 2) { $('#tue').attr('checked', 'checked'); }
if (number & 4) { $('#wed').attr('checked', 'checked'); }
if (number & 8) { $('#thu').attr('checked
...
我认为你需要 m = reshape(dec2bin(typecast(b(:),'uint8'),8).',1,[]);
请注意,这会读取Matlab标准的列 - 主要顺序(向下,然后跨越)。 然后你可以转换回来 b_recovered = reshape(typecast(uint8(bin2dec(reshape(m,8,[]).')),'double'),size(b));
由于typecast不改变底层数据的情况下转换数据类型,因此这个过程不会降低准确性。 例如, >> b = ra
...
在C ++中,最简单的方法可能是使用std::bitset : #include
#include
int main() {
int x = 5;
std::bitset<8> bin_x(x);
std::cout << bin_x;
return 0;
}
结果: 00000101 In C++, the easiest way is probably to use a std::bitset: #include
...
假设二进制整数的长度不超过8位。 调用BinToDec() char Input[9];
cout << "Please enter the 8-bit binary:\n";
cin >> (Input);
cout << BinToDec(Input);
你需要创建一个至少有8 + 1个元素的char数组,char数组字符串的最后一个元素总是0。 int BinToDec(char* BinIn){
int intOut = 0;
intOut = intOut + (Bi
...
首先,您需要为多余的表示选择偏见。 由于通常选择等于可用量程的一半的偏置,对于8位,我们将选择-127作为偏置。 这意味着您有8位将被解释为无符号整数,并且将从该整数中减去127以获得最终结果。 因此,既然我们有 final = unsigned + bias
final = -17
bias = -127
我们结束了 unsigned = final - bias = -17 - (-127) = 110
因此-17的超出-127表示将是01101110(十进制110)。 First of
...
你的问题主要是binaryList = list(str(binary)) 。 str(0b010001110)如您所料,返回'142' ,而不是'0b101010' 。 因此, binaryList是['1', '4', '2'] 。 巧合的是, 1 * 2**2 + 4 * 2**1 + 2等于14,这给人的印象是你的功能不处理最后一位数。 但是,如果你正在运行,你的功能是0b101010作为输入,你得到10 。 将二进制表示形式化为字符串的解决方案是传递给format : list("{0:
...
您可能不清楚temp += '0'正在做什么。 它不是一个字符串,而是它偏移了一个未初始化的指针,并且当你实际使用它时,它是temp2[j] 。 要使用我认为你想要的字符串,请查看strcat() 。 我会把它扔掉并重新开始。 不要操纵字符串中的字符,只需将字符串转换为二进制字符串即可。 编写一些代码来将输入字符串从第一个字符移到最后一个字符。 保留答案的result整数,最初为0 。 当你遍历字符串时,移动result << 1 ,然后如果你看到一个字符'1' ,则在result添加数字1 。
...