• /** 输入一个数字n 输出要求的无符号二进制串* */public class BinaryNumber {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int[] binary = new int[100]...

package day11;
import java.util.Scanner;
/*
* 输入一个数字n 输出要求的无符号的二进制串
* */
public class BinaryNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] binary = new int[100];
int number = scan.nextInt();
int count = 0;
for (int i = 0; i < binary.length; i++) {
if (number != 0) {
binary[i] = number % 2;
number /= 2;
count++;
}else{
break;
}
}
System.out.println(count);
//逆序输出
for (int i = count-1; i >= 0; i--) {
System.out.print(binary[i]);
}
}
}

展开全文
• 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!...

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 。
...

展开全文
• 整数相比浮点数在计算机数字存储中算是最基础、最简单的二进制存储结构，通常情况下在任意编程语言中不会遇到本文所述的无符号整数转有符号整数的问题（或者借助语言专有的方法亦可轻松转换），但是如果遇到存储的...
前言
整数相比浮点数在计算机数字存储中算是最基础、最简单的二进制存储结构，通常情况下在任意编程语言中不会遇到本文所述的无符号整数转有符号整数的问题（或者借助语言专有的方法亦可轻松转换），但是如果遇到存储的数字在不同编程语言中传递读取则可能遇到这个问题，如何转化呢？笔者也曾深入了解了整数的二进制存储结构和搜索了一些转化方法，但是在网络上所讲的转换过程要嘛实现复杂要嘛没说明原理…所以笔者以自己的视角来描述下转换方法。
计算过程
简单来说，有符号整数用最高位作符号位，正数与原码相同，负数除符号位外取反加1，其实原理说的很清楚，但是如果拿来在编程语言中计算就太麻烦了，笔者推出用观察法来简单明了地说明计算方法。 以4字节的32位整数Integer为例排列说明：
二进制表示十进制代称01111111111111111111111111111111 2147483647B(最大值)00000000000000000000000000000011300000000000000000000000000000010200000000000000000000000000000001 100000000000000000000000000000000011111111111111111111111111111111-1C11111111111111111111111111111110 -211111111111111111111111111111101-310000000000000000000000000000000-2147483648A(最小值)
观察下即有： 数轴可以这样表示：A(-2147483648)—>---0—>---B(2147483647)，其中： [A,0) 单调递增1；[0,B] 单调递增1 观察出以上规律后，可以得到以下： 设y=f(x)，x为无符号整数，y为对应有符号整数，观察有：y>=0时,y=x; y<0时,y=x-z;（z为未知数） 按照示例数字C有：11111111111111111111111111111111 - z = -1 所以： z=11111111111111111111111111111111 + 1 =100000000000000000000000000000000 =0x100000000 如何判断有符号整数（即y）的符号呢？两种方法：
用二进制位运算：x & 0x80000000 后是否等于 0x80000000从表格中观察到如果x大于 1111111111111111111111111111111（正数最大值），都是负数
结论
转换方法： 根据上文判断无符号整数对应有符号整数的符号，如果正整数直接取原值就可以，负整数的话减掉一个中间值就行（如上文计算的4字节的32位整数为 0x100000000，其它位整数对应该值为

2

二

进

制

位

数

2^{二进制位数}

）
展开全文
• 尝试将二进制列表转换为符号的16位小端整数input_data = [['1100110111111011','1101111011111111','0010101000000011'],['1100111111111011','1101100111111111','0010110100000011']]Desired Output =[[-1074, -...

尝试将二进制列表转换为有符号的16位小端整数
input_data = [['1100110111111011','1101111011111111','0010101000000011'],['1100111111111011','1101100111111111','0010110100000011']]
Desired Output =[[-1074, -34, 810],[-1703, -39, 813]]
results = []
for i in input_data:
hex_convert = [hex(int(x,2)) for x in i]
convert = [int(y[4:6] + y[2:4], 16) for y in hex_convert]
results.append(convert)
print (results)
output: [[64461, 65502, 810], [64463, 65497, 813]]
这很好用，但是上面是无符号整数。我需要能够处理负值的带符号整数。然后，我尝试了另一种方法：
results_2 = []
for i in input_data:
hex_convert = [hex(int(x,2)) for x in i]
to_bytes = [bytes(j, 'utf-8') for j in hex_convert]
split_bits = [int(k, 16) for k in to_bytes]
convert_2 = [int.from_bytes(b, byteorder = 'little', signed = True) for b in to_bytes]
results_2.append(convert_2)
print (results_2)
Output: [[108191910426672, 112589973780528, 56282882144304], [108191943981104, 112589235583024, 56282932475952]]
这个结果比第一个更加疯狂。我知道我的方法是错误的，并且我从未能够过二进制转换等知识，但这无济于事，但是我觉得我走上了正确的道路：
(b, byteorder = 'little', signed = True)
但无法解决我错了。任何帮助解释此概念的帮助将不胜感激。
解决方案
这个结果比第一个更加疯狂。我知道我的方法是错误的...但是无法找出我错误的地方。
问题在于转换为字节。让我们一次来看一下它：
int(x, 2)
精细;我们将字符串视为整数值的以2为底的表示形式，然后获取该整数。唯一的问题是a)无符号和b)大端。
hex(int(x,2))
这是在基数16中创建带有0x前缀的整数字符串表示形式。值得注意的是，我们希望每个字节有两个文本字符。这已经是朝错误的方向前进了。
您可能已经考虑过使用十六进制，因为您已经看到\xAB了字符串表示形式中的样式转义符。这是完全不同的事情。该字符串'\xAB'包含一个字符。该字符串'0xAB'包含四个。
从那里开始，其他一切仍然是胡说八道。bytes使用文本编码转换为，仅意味着0例如将文本字符替换为字节值48(因为在UTF-8中，它使用具有该值的单个字节进行编码)。对于此数据，我们使用UTF-8可以得到与假定纯ASCII相同的结果(因为UTF-8是“ ASCII透明的”，并且文本中没有非ASCII字符)。
那么我们该怎么做呢？
我们希望将第一步中的整数转换为用于表示它的字节。就像有一个.from_bytes类方法允许我们从基础字节创建整数一样，有一个实例方法使我们能够获取表示整数的字节。
因此，我们使用.to_bytes，指定int从二进制字符串创建时假定的长度，有符号性和字节序-这将为我们提供与该字符串相对应的字节。然后，我们从这些字节中重新创建整数，除了现在指定适当的符号和字节序。之所以要.to_bytes指定长度，是因为整数没有特定的长度-表示它所需的字节数最少，但是您可以随意使用更多字节。(如果要处理带符号的值，这尤其重要，因为它会自动进行符号扩展。)
从而：
for i in input_data:
values = [int(x,2) for x in i]
as_bytes = [x.to_bytes(2, byteorder='big', signed=False) for x in values]
reinterpreted = [int.from_bytes(x, byteorder='little', signed=True) for x in as_bytes]
results_2.append(reinterpreted)
但是，让我们稍微改善一下代码的组织。我将首先创建一个函数来处理单个整数值，然后我们可以使用解析来处理列表。实际上，我们可以对嵌套列表使用嵌套的理解。
def as_signed_little(binary_str):
# This time, taking advantage of positional args and default values.
as_bytes = int(binary_str, 2).to_bytes(2, 'big')
return int.from_bytes(as_bytes, 'little', signed=True)
# And now we can do:
results_2 = [[as_signed_little(x) for x in i] for i in input_data]

展开全文
• 十进制转换成无符号二进制数：(无符号二进制整数无法表示负十进制数)。1、整数部分：采用"除2取余，逆序排列"法。用2整除十进制整数，可以得到一个商和余数；再用2去除商，又会得到一个商和余数，如此进行，直到商为...
• // 二进制十进制.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdio.h"int xn(int num,int n)//实现计算2的n次方的值{int outcome=1;int i=1;for (;i<=n;i++)...
• Example #2 bindec() 将输入解读为无符号整数*Thelessonfromthisexampleisintheoutput*ratherthanthePHPcodeitself.*/$magnitude_lower=pow(2,(PHP_INT_SIZE*8)-2);p($magnitude_lower-1);p(\$magnitude_lower,...
• 标题：整数进制转换(十六进制，十进制二进制)--表格法在计算机里，最基本的存储单位字节(Byte，常说的大B)，1个字节包含8位(bit，常说的小b)。计算机的数据就是一个字节一个字节的形式存储在内存中。内存的大小...
• //即所有的负值的byte的补码和源码想象为无符号的话之和256 -(NSString *)unsignedSixteenChangeTenString:(NSString *)sixteenStr { NSString *twoBrand = [self getBinaryByhex:sixteenStr];//二进制有无...
• 一、十进制二进制 1、正整数二进制 要点：除二取余，倒序排列，高位补零。 方法：使用反除号将正的十进制数除以二，得到的商再除以二，一...1、整数二进制转化成十进制 方法：首先将二进制数补齐位数，首位如果是0
• } int Empty(Stack s) //判断栈是否空 { if(s.base==s.top) return(1); else return(0); } int * Pop(Stack &s,int *e) //出栈 ,你的程序没有很大的问题，就是出栈函数有一点问题，这里改动了， //你对照你自己的...
• //取余，进行进制转换，但是顺序与正确值相反 k/=n;//转换一位之后进行相应的变化 } if(m!=(int)m)//选择性计算，如果是整数就不用进行这一步的计算了，这样可以节约程序的运行时间 { d=m-(int)m;//取小数部分 while...
• 代码如下：#include //将十进制数转化为二进制数，位运算的取位操作using namespace std;int main(){unsigned short i;cout << "请输入一个小于65536的正整数" << endl;cin >> i;for(int j=15; j ...
• 十进制转换为二进制数时，由于整数和小数的转换方法不同，所以先将十进制数的整数部分和小数部分分别转换后，再加以合并。中文名十进制二进制外文名Decimal system to binary system适用领域电子、编程、编码...
• 给出一个无符号十进制的正整数N，求这个数N的十六进制。 “除R取余法”：十进制整数转换成R进制整数，可用十进制整数连续地除以R，每次除法获得的余数即相应R进制数一位，最后商为零时，按逆序输出结果。 例如...
• 1二进制数1101.1111转换成十六进数应()A.A.FB.E.FC.D.FD.A.E2二进制数110101对应的十进制数是()A.44B.65C.53D.743二进制数11011+1101等于()A.100101B.10101C.101000D.100114二进制数11101011-10000100等于()A....
• 1、 数值数据：无符号整数、带符号整数、浮点数（实数） 2、非数值数据：逻辑数（包括位串）、西文字符和汉字 计算机内部所有信息都用二进制（即：0和1）进行编码 用二进制编码的原因 1、制造二个稳定态的物理器件...
• 进位制/位置计数法是一种记数方式，故亦称进位记数法/位值计数法，可以用有限的数字...十进制二进制十进制转换为二进制数时，由于整数和小数的转换方法不同，所以先将十进制数的整数部分和小数部分分别转换后，
• python - 将十六进制转换为二进制我有ABC123EFFF。我想拥有001010101111000001001000111110111111111111(即二进制代表，例如42位数和前导零)。怎么样？18个解决方案92 votes为了解决左侧尾随零问题：my_hexdata = ...
• 首先要了解十进制数的二进制转换的函数，设置一个计数器p，当取余的数1时，计数器加1，利用函数的声明调用 函数，最后在主函数中输出i的值。#include int count(int m){int p;int i=0;while(m!=0){p=m%2;m=m/2;if...
• c# 带符号8位二进制十进制方法 /// <summary> /// 有符号二进制数转10进制 /// </summary> /// <param name="binaryStr"></param> /// <returns></returns> public ...
• dec2bin()：该函数实现从十进制二进制转换。调用格式：b=dec2bin(a)。其中b为二进制，a为十进制。 bin2dec()：该函数实现从二进制十进制转换，调用格式：a=bin2dec(b)。其中b为二进制，a为十进制。参数b的...
• 展开全部java实现：整数进制相互转换的方法：十进制转62616964757a686964616fe78988e69d8331333363376461为二进制、八进制、十六进制， 用 Integer.toXXXString()方法(1)十进制转为二进制： Integer.toBinaryString...
• 下面本篇文章就来给大家介绍一下dechex()和base_convert() 函数是如何将十进制转换为十六进制的，希望对大家有所帮助。【视频教程推荐：PHP教程】方法一：使用dechex()函数将十进制转换为十六进制dechex()函数是PHP...
• 什么叫二进制二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数2，进位规则是“逢二进一”，借位规则是“借一当二”，由18世纪德国数理哲学大师莱布尼兹发现。当前的...
• 进制的相互转换4.1 二进制十进制的相互转化4.2 二进制与十六进制的相互转换4.3 十进制与十六进制的相互转换5. 人类什么最习惯用十进制6. 计算机什么用的是二进制小结 1. 进制的定义 首先我们需要先了解什么是...
• "信息技术基础"是高中信息技术课程的必修部分,其中信息的编码这课要求学生能够熟练掌握二进制十进制数的相互转换,在信息技术高考中被列为Ⅱ级要求,即对所列知识要理解其确切含义及与其它知识的联系,能够用所学的...
• #include<stdio.h> char trans(unsigned int d,int s){ char digits[]="0123456789ABCDEF"; char buf[17]; int i=16; if(s<2||s>16) return 0; buf[i]='\0'; do { int t; t=d%s; d=d/s;...
• 数制一、数制的基本概念1、二进制2、十进制3、十六进制4、八进制二、数制的转换1、二、十进制转换2、十、十六、二进制转换 一、数制的基本概念 1、二进制 计算机中的数是用二进制数表示的，用后缀B表示。特点是...
• //第一个参数String类型，第二个为转换的进制，只有一个参数的时候默认为十进制无符号整数 2) 10->2 Integer.toBinaryString(int); //将整数转化为二进制，注意转化后字符串的形式 ...

...