也许这是一个noob问题,但我通过TCP接收一些数据,当我看到字符串时,我得到以下内容:
\x00\r\xeb\x00\x00\x00\x00\x01t\x00
那是什么\r性格,什么是t在\x01t是什么意思?
我试过谷歌搜索,但我不确定谷歌会...
谢谢.
说我有很多数字.我知道在C中我们可以声明:
long long int // What is equivalent of this in Java?
long double // and this?
Run Code Online (Sandbox Code Playgroud)
谢谢.
我试图从字节数组中获取正确的int。通过POS for .Net从RFIDTag读取字节。(大约需要18位)
二进制格式的字节数组如下:00001110 11011100 00000000 00011011 10000000
我需要摆脱的是:00 00000000 11101101(int = 237)
从原始字节开始将以相反的顺序为以下位:------ 10 11011100 00000000
我一直在看bitArray。Array.Reverse。以及几种移位位的方法。但是我只是无法绕过这个头。
谁能指出我正确的方向?
我正在编码,以下代码没有提供所需的输出.当pos被除以2时,pos&1应该返回余数.当我用pos%2替换pos&1时,一切正常.可能是什么问题呢?
#include <iostream>
using namespace std;
int main(){
int y;
unsigned long long int pos;
cin>>y;
cin>>pos;
int f=0;
while(y>0){
y--;
if(pos&1==0){
f=1-f;
}
pos=pos/2;
}
if(f==1){
cout<<"blue\n";
}
else
cout<<"red\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud) int a=0xFFFF;
System.out.println("test1 "+Integer.toBinaryString(a));
a<<=1;
System.out.println("test2 "+Integer.toBinaryString(a));
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Output: test1 1111111111111111 test2 11111111111111110
我的问题是,它0来自哪里?
为什么不代码
import Data.Bits
a = (.&.) 6 9
Run Code Online (Sandbox Code Playgroud)
给我吗
9
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么这不起作用.干杯!
我想将前 3 位从一个字节传输到另一个字节。目前我使用以下但它太慢了(不正确的分支预测会减慢速度)>
byte newByte = 0;
if(((oldByte >> 0)&1) == 1) newByte |= 1 << 0;
if(((oldByte >> 1)&1) == 1) newByte |= 1 << 1;
if(((oldByte >> 2)&1) == 1) newByte |= 1 << 2;
Run Code Online (Sandbox Code Playgroud)
如何在没有 if 语句或循环的单个操作中执行此操作?
注意:除了 bit num 3 之外的其他位可能会或可能不会在 oldByte 中设置,但我想忽略它们。
我尝试使用 newByte |= oldByte 但它传输的设置位超出了第 3 位,这不是我想要的。
有任何想法吗?
我在使用C程序时遇到了一些问题.在程序中,我使用unsigned long long int变量来表示64位映射,每个位表示映射上的位置.我需要能够更新这些位(位置),即设置或清除一位.为了清除和设置一点,我做(0是最不重要的位置):
map &= ~(1 << pos) // clear bit in position 'pos'
map |= (1 << pos) // set bit in position 'pos'
Run Code Online (Sandbox Code Playgroud)
问题是,当我执行这些操作时,地图左侧的所有位都pos设置为0(而我只希望位置的位pos改变).
我究竟做错了什么?
我有一个内存关键的FORTRAN程序,它目前使用两个整数数组,第一个使用4个BYTES整数,第二个使用1个BYTE整数.
两个数组都没有"完全"使用,即我知道存储在4字节数组中的数字不会超过一百万左右(所以我需要超过2个字节,但我没有使用4个字节的所有位)同样我只使用2位的1字节数组作为"标志".
为了节省内存,我想尝试将两者结合起来,即使用4字节数组的最左边两位来存储2个标志.
现在我知道如果我首先设置INTEGER值,我可以随后使用IBSET/IBCLR设置标志,并且仍然使用IBITS函数安全地提取我的整数以提取最右边的X位(在这种情况下X = 28):
integer(kind=4) :: imark,inum
imark=600245 ! example number
! use bits 29 and 30 to store flags...
imark=IBSET(imark,29)
imark=IBSET(imark,30)
print *,imark ! gives 1611212981
! extract right most bits:
inum=IBITS(imark,0,28)
print *,inum ! gives back 600245 as desired.
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何修改整数,同时保留标志的内存.换句话说,我需要与 IBITS 相反的功能,复制一个只分配最右边X位的整数.
显然,如果我分配一个新的整数值(imark = 343525),它将重置标志位.我可以编写一个函数,一次循环一个新整数值的最右边X位,然后在我的4字节数组中使用IBSET/IBCLR设置它们,但这看起来非常冗长.但我没有找到执行此任务的任何内在功能.
在开始学习C++之前,我总是在脑子里想到这些问题:
1-在x86计算机上编译的应用程序是否可以在x64计算机上运行?
2-在x64计算机上编译的应用程序是否可以在x86计算机上运行?
3-有什么区别吗?
4-如果1和2是肯定的,那么为什么有些应用程序对每个os位有不同的下载,为什么我得到的一些lib如lua52有一个x64和x86版本只能在指定的os上运行而且在不同的os上有错误?
编辑:
5-如果我的操作系统是x64,我可以在x86中编译我的应用程序吗?