必威体育Betway必威体育官网
当前位置:首页 > IT技术

memset的用法

时间:2019-09-08 14:10:00来源:IT技术作者:seo实验室小编阅读:66次「手机版」
 

memset

参考资料:

https://blog.csdn.net/yang_zongjun/article/details/39025581

有很多博客的确介绍了怎么具体操作。

但是我有些不理解它实际的计算,所以自己写一篇博客,以后人为鉴:

贴上代测代码

int a[100];
int main(){
    cout<<"memset():\n"<<endl;
    memset(a, -1, sizeof(a)); cout <<" -1:  "<< setw(12)<<right<< a[1] << endl;
    memset(a, 0, sizeof(a));  cout <<"  0:  "<< setw(12)<<right<< a[1] << endl;
    memset(a, 1, sizeof(a));  cout <<"  1:  "<< setw(12)<<right<< a[1] << endl;
    memset(a, 127, sizeof(a));cout <<"127:  "<< setw(12)<<right<< a[1] << endl;
    memset(a, 128, sizeof(a));cout <<"128:  "<< setw(12)<<right<< a[1] << endl;
    return 0;
}

效果图:

大家观察到了吗:有些数字比如:1 通过代码可以看出来不是 1 。而是16843009。

这个是为什么呢???

首先介绍一下:

int类型占4个字节(Byte) 而1位的字节里有8个位(二进制每一位)

转化为十进制时会先需要 按权相加,最后的还需要除以2,因为你最高位是符号位

上面就是计算机导论所谈到的编码

memset()的功能就是给我什么类型 对于每一个字节赋值,这个值就是二进制8位的数字;

对于int类型它进行的就是对于4个字节单独赋值。

例如 memset(a, 1, sizeof(a));

此时a[ ] 每一个元素里的值为(0000,0001 0000,0001 0000,0001 0000,0001)(2)=16843009(10)

如图所示:

而计算memset(a,128,sizeof(a ))

a[0]=(1000,0000 1000,0000 1000,0000 1000,0000)(2)

此时它的最高位(符号位)被占据了。

我们知道 :

符号位=0:这个数为正数:原码=反码=补码。计算补码也就相当于计算原码值

符号位=1:这个数为负数:反码符号位不变 其余每一位取反。补码在反码+1;

原码:1000,0000 1000,0000 1000,0000 1000,0000

反码:0111,1111 0111,1111 0111,1111 0111,1111

补码:1111,1111 0111,1111,0111,1111,1000,0000

计算是不涉及符号位.

https://blog.csdn.net/Jason_M_Ho/article/details/78700434

补充一下:

为什么memset(a,-1,sizeof(a))可以赋值成-1。

我之前也没关注这个问题。原码是1000,0001-反码是1111,1110,补码是1111,1111

按照上面的按4个字节的补码赋值得到-1111,1111。

附上4个字节后

1111,11111111,11111111,11111111,1111

得到的答案还是-1.

因为默认了在补码里-1=1111,1111;

为了的就是表示0 的运算,1 + (-1)=0

所以-1=0000,0000-0000,0001

-1=1111,1111

相关阅读

Android—— ListView 的简单用法及定制ListView界面

一、ListView的简单用法2. 训练目标1) 掌握 ListView 控件的使用2) 掌握 Adapter 桥梁的作用实现步骤:1)首先新建一个项目, 并让ADT

Android-0.Android Studio布局中layout_weight用法

Indicates how much of the extra space in the LinearLayout is allocated to the view associated with these LayoutParams.

excel计算标准偏差公式的用法

Excel中需要计算标准偏差,用函数具体该如何计算呢?下面是seo实验室小编带来的关于excel计算标准偏差公式的用法,希望阅读过后对你有

selenium用法详解

selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8

py001- random中sample()函数的用法

sample(list, k)返回一个长度为k新列表,新列表存放list所产生k个随机不重复的元素函数用法实例:import random list = [1, 2, 3] p

分享到:

栏目导航

推荐阅读

热门阅读