标签: unsigned-integer

JNI:将unsigned int转换为jint

如何将unsigned int转换为jint?我是否必须完全转换它,或者我可以在没有任何特殊处理的情况下退回它?这基本上是我的代码,但我无法测试它,因为我没有在本地设置JNI.

JNIEXPORT jint JNICALL
Java_test_test(JNIEnv* env, jobject obj, jlong ptr)
{
    MyObject* m = (MyObject*) ptr; 
    unsigned int i = m->get(); 
    return i; 
}
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface unsigned-integer

19
推荐指数
3
解决办法
3万
查看次数

将unsigned int转换为signed int C.

我试图65529从一个转换unsigned int为签名int.我尝试做这样的演员:

unsigned int x = 65529;
int y = (int) x;
Run Code Online (Sandbox Code Playgroud)

但是y当它应该返回-7时仍然返回65529.这是为什么?

c int unsigned-integer

19
推荐指数
3
解决办法
11万
查看次数

计算存储十进制数所需的位数

这是一个我坚持的功课问题.

考虑无符号整数表示.存储包含以下内容的十进制数需要多少位:

i) 3 digits ii) 4 digits iii) 6 digits iv) n digits
Run Code Online (Sandbox Code Playgroud)

我知道无符号整数的范围是0到2 ^ n,但我不知道表示数字所需的位数如何取决于它.请帮帮我.

提前致谢.

unsigned decimal unsigned-integer

18
推荐指数
3
解决办法
10万
查看次数

溢出的无符号整数

unsigned int当我溢出它时会包含什么?具体来说,我想用两个unsigned ints 进行乘法:unsigned int乘法结束后会有什么?

unsigned int someint = 253473829*13482018273;
Run Code Online (Sandbox Code Playgroud)

c++ integer-overflow unsigned-integer

17
推荐指数
2
解决办法
2万
查看次数

在sqlite3语句中绑定'unsigned long'(uint64)?C++

我正在使用sqlite.org上提供的sqlite3库.

我有一些我想要存储在数据库中的unsigned longs.我不想自己构建查询并将其保持开放以进行某种注入(无论是否是偶然的).因此,我正在使用这些sqlite_bind_*函数来"清理"我的参数.

问题是对于无符号长整数,只有整数没有函数类型.

int sqlite3_bind_int(sqlite3_stmt*, int, int);

int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);

如果我无法以无符号方式存储它们,我肯定会有数字会溢出.

我自己需要自己管理吗?(即在插入数据库之前从db中选择或转换为signed类型后转换为无符号类型)

如果我自己必须自己管理,当比较真的意味着在无符号范围内时,如何做一些存储为有符号长整数的比较查询?

查看转换后的INTEGER数据类型,可以认为无符号长整数可以毫无问题地表示.

如果有其他可用解决方案,请赐教!谢谢!

c++ sqlite bind unsigned-integer

16
推荐指数
2
解决办法
2万
查看次数

C - unsigned int to unsigned char array conversion

我有一个无符号的int数(2字节),我想将其转换为unsigned char类型.从我的搜索中,我发现大多数人建议您执行以下操作:

 unsigned int x;
 ...
 unsigned char ch = (unsigned char)x;
Run Code Online (Sandbox Code Playgroud)

是正确的方法吗?我问,因为unsigned char是1个字节,我们从2字节数据转换为1个字节.

为了防止任何数据丢失,我想创建一个unsigned char []数组并将各个字节保存到数组中.我被困在以下方面:

 unsigned char ch[2];
 unsigned int num = 272;

 for(i=0; i<2; i++){
      // how should the individual bytes from num be saved in ch[0] and ch[1] ??
 }
Run Code Online (Sandbox Code Playgroud)

另外,我们如何将unsigned char [2]转换回unsigned int.

非常感谢.

c byte type-conversion unsigned-char unsigned-integer

16
推荐指数
4
解决办法
7万
查看次数

C++隐式转换(有符号+无符号)

我理解,对于隐式转换,如果我们有无符号类型操作数和带符号类型操作数,并且无符号操作数的类型与带符号操作数的类型相同(或更大),则将转换带符号操作数未签名.

所以:

unsigned int u = 10;  
signed int s = -8;

std::cout << s + u << std::endl;

//prints 2 because it will convert `s` to `unsigned int`, now `s` has the value
//4294967288, then it will add `u` to it, which is an out-of-range value, so,
//in my machine, `4294967298 % 4294967296 = 2`
Run Code Online (Sandbox Code Playgroud)

我不明白 - 我读到如果签名操作数的类型比无符号操作数大:

  • 如果无符号类型中的所有值都适合较大的类型,则无符号操作数将转换为有符号类型

  • 如果无符号类型中的值不适合较大的类型,则带符号的操作数将转换为无符号类型

所以在以下代码中:

signed long long s = -8;
unsigned int u = 10;
std::cout << s + u << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ arithmetic-expressions type-conversion unsigned-integer

13
推荐指数
1
解决办法
2万
查看次数

如何在C中生成随机64位无符号整数

我需要使用C.我的意思是产生的随机的64位无符号整数,范围应该018446744073709551615.RAND_MAX1073741823.

我在链接中找到了一些可能重复的解决方案,但答案主要是连接一些rand()结果或进行一些增量算术运算.所以结果总是18位或20位.我也希望像成果5,11,33387,不只是3771778641802345472.

顺便说一句,我真的没有这么多的C经验,但任何方法,代码样本和想法都可能是有益的.

c random unsigned-integer

12
推荐指数
2
解决办法
8664
查看次数

按位运算符和整数提升会发生什么?

我有一个简单的程序.请注意,我使用的是无符号的固定宽度整数1字节.

#include <cstdint>
#include <iostream>
#include <limits>

int main()
{
    uint8_t x = 12;
    std::cout << (x << 1) << '\n';
    std::cout << ~x;

    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    std::cin.get();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的输出如下.

24
-13
Run Code Online (Sandbox Code Playgroud)

我测试了更大的数字,操作员<<总是给我正数,而操作员~总是给我负数.我然后使用sizeof()并发现......

当我使用左移位运算符(<<)时,我收到一个无符号的4字节整数.

当我使用bitwise not运算符(~)时,我收到一个带符号的4字节整数.

似乎bitwise not运算符(~)像算术运算符一样执行有符号整数提升.但是,左移运算符(<<)似乎提升为无符号整数.

我觉得有必要知道编译器什么时候改变我背后的东西.如果我在分析中是正确的,那么所有按位运算符都会提升为4字节整数吗?为什么一些签名和一些未签名?我很困惑!

编辑:我总是得到肯定或总是得到负值的假设是错误的.但是由于错误,我理解真正发生的事情,这要归功于下面的重要答案.

c++ bitwise-operators integer-promotion unsigned-integer signed-integer

11
推荐指数
2
解决办法
4729
查看次数

为什么Kotlin不支持无符号整数?

我刚刚遇到一种情况,其中无符号整数本来就非常有用(例如,任何负值都没有意义等等).令人惊讶的是,我发现Kotlin不支持无符号整数 - 并且似乎没有其他任何关于为什么(即使我看过).

我错过了什么吗?

types language-design unsigned-integer kotlin

11
推荐指数
3
解决办法
4940
查看次数